Übersetzung vorschlagen
 
Andere Vorschläge:

progress indicator
Keine anderen Vorschläge
Per Mausklick bewerten und Feedback geben
MSDN
MSDN Library
Visual Studio 2010
Visual Studio
Visual C++
Verknüpfung
 EXPORTS
Alle reduzieren/Alle erweitern Alle reduzieren
Inhalt anzeigen:  Englisch mit deutscher ÜbersetzungInhalt anzeigen: Englisch mit deutscher Übersetzung
Visual Studio 2010 - Visual C++
EXPORTS

Introduces a section of one or more definitions that are exported functions or data. Each definition must be on a separate line.

EXPORTS
definitions

The EXPORTS keyword can be on the same line as the first definition or on a preceding line. The .def file can contain one or more EXPORTS statements.

The syntax for export definitions is:

entryname[=internalname] [@ordinal [NONAME]] [PRIVATE] [DATA]

entryname is the function or variable name that you want to export. This is required. If the name you export is different from the name in the DLL, specify the export's name in the DLL with internalname. For example, if your DLL exports a function, func1() and you want it to be used as func2(), you would specify:

EXPORTS
func2=func1

@ordinal lets you specify that a number, and not the function name, will go into the DLL's export table. This can help you minimize the size of your DLL. The .LIB file will contain the mapping between the ordinal and the function, which allows you to use the function name as you normally would in projects that use the DLL.

The optional NONAME keyword allows you to export by ordinal only and reduce the size of the export table in the resulting DLL. However, if you want to use GetProcAddress on the DLL, you must know the ordinal because the name will not be valid.

The optional keyword PRIVATE prevents entryname from being placed in the import library generated by LINK. It has no effect on the export in the image also generated by LINK.

The optional keyword DATA specifies that an export is data, not code. For example, you could export a data variable as follows:

EXPORTS
i DATA

When you use PRIVATE and DATA for the same export, PRIVATE must precede DATA.

There are three methods for exporting a definition, listed in recommended order of use:

  1. The __declspec(dllexport) keyword in the source code

  2. An EXPORTS statement in a .def file

  3. An /EXPORT specification in a LINK command

All three methods can be used in the same program. When LINK builds a program that contains exports, it also creates an import library, unless an .exp file is used in the build.

The following is an example EXPORTS section:

EXPORTS
   DllCanUnloadNow      @1     PRIVATE   DATA
   DllWindowName = Name        DATA
   DllGetClassObject    @4 NONAME   PRIVATE
   DllRegisterServer    @7
   DllUnregisterServer

Note that when you export a variable from a DLL with a .def file, you do not need to specify __declspec(dllexport) on the variable. However, in any file that uses the DLL, you must still use __declspec(dllimport) on the declaration of data.

Visual Studio 2010 - Visual C++
EXPORTS

Durch diese Anweisung wird ein Abschnitt mit einer oder mehreren definitions eingeleitet, bei denen es sich um exportierte Funktionen oder Daten handelt. Jede Definition muss in einer eigenen Zeile stehen.

EXPORTS
definitions

Das EXPORTS-Schlüsselwort kann sich in derselben Zeile wie die erste Definition oder in einer eigenen, vorangestellten Zeile befinden. Die DEF-Datei kann eine oder mehrere EXPORTS-Anweisungen enthalten.

Die Syntax für eine Exportdefinition lautet:

entryname[=internalname] [@ordinal [NONAME]] [PRIVATE] [DATA]

entryname steht für die Funktion oder den Variablennamen, die bzw. der exportiert werden soll. Diese Angabe ist erforderlich. Falls der exportierte Name von dem in der DLL abweicht, geben Sie den Exportnamen in der DLL mithilfe von internalname an. Wenn durch die DLL beispielsweise die Funktion func1() exportiert wird und diese Funktion als func2() verwendet werden soll, geben Sie Folgendes an:

EXPORTS
func2=func1

Mithilfe von @ordinal können Sie festlegen, dass anstelle des Funktionsnamens eine Zahl in die DLL-Exporttabelle aufgenommen wird. Auf diese Weise kann die Größe der DLL verringert werden. Die Zuordnung zwischen Ordnungszahl und Funktion ist in der LIB-Datei enthalten. Auf diese Weise können Sie den Funktionsnamen genauso verwenden wie in Projekten, die die DLL nutzen.

Das optionale NONAME-Schlüsselwort bietet die Möglichkeit, ausschließlich auf der Grundlage von Ordnungszahlen zu exportieren, sodass die Größe der Exporttabelle in der resultierenden DLL verringert werden kann. Wenn Sie jedoch GetProcAddress für die DLL verwenden möchten, müssen Sie die Ordnungszahl kennen, da der Name nicht gültig ist.

Das optionale PRIVATE-Schlüsselwort verhindert, dass der entryname in der von LINK erstellten Importbibliothek gespeichert wird. Es hat keine Auswirkung auf den Export in die Abbilddatei, die ebenfalls von LINK erstellt wird.

Mit dem optionalen DATA-Schlüsselwort wird angegeben, dass ein Export datenbezogen und nicht codebezogen ist. Sie könnten eine Datenvariable beispielsweise wie folgt exportieren:

EXPORTS
i DATA

Falls PRIVATE und DATA im selben Exportvorgang verwendet werden, muss PRIVATE vor DATA angegeben werden.

Es gibt drei Methoden zum Exportieren einer Definition. Sie sind in der Reihenfolge aufgeführt, in der sie verwendet werden sollten:

  1. Das __declspec(dllexport)-Schlüsselwort im Quellcode

  2. Eine EXPORTS-Anweisung in einer DEF-Datei

  3. Eine /EXPORT-Spezifikation in einem LINK-Befehl

Es ist möglich, alle drei Methoden im selben Programm einzusetzen. Wenn LINK ein Programm erstellt, das Exporte enthält, wird auch eine Importbibliothek erstellt, es sei denn, bei der Erstellung wird eine EXP-Datei verwendet.

Im Folgenden sehen Sie ein Beispiel für einen EXPORTS-Abschnitt:

EXPORTS
   DllCanUnloadNow      @1     PRIVATE   DATA
   DllWindowName = Name        DATA
   DllGetClassObject    @4 NONAME   PRIVATE
   DllRegisterServer    @7
   DllUnregisterServer

Beachten Sie, dass __declspec(dllexport) nicht für die Variable angegeben werden muss, wenn Sie eine Variable mithilfe einer DEF-Datei aus einer DLL exportieren. In allen Dateien, die die DLL verwenden, muss jedoch weiterhin __declspec(dllimport) bei der Deklaration von Daten verwendet werden.

Communityinhalt   Was ist Community Content?
Neuen Inhalt hinzufügen RSS  Anmerkungen
Processing
© 2012 Microsoft. Alle Rechte vorbehalten. Nutzungsbedingungen | Markenzeichen | Informationen zur Datensicherheit
Page view tracker