Importowanie do aplikacji przy użyciu atrybutu __declspec(dllimport)

Program, który używa publicznych symboli zdefiniowanych przez bibliotekę DLL, mówi się, że je importuje. Podczas tworzenia plików nagłówkowych dla aplikacji, które używają bibliotek DLL do kompilowania, użyj ich __declspec(dllimport) w deklaracjach symboli publicznych. Słowo kluczowe __declspec(dllimport) działa niezależnie od tego, czy eksportujesz z plikami def, czy ze __declspec(dllexport) słowem kluczowym.

Aby kod był bardziej czytelny, zdefiniuj makro, __declspec(dllimport) a następnie za pomocą makra zadeklaruj każdy zaimportowany symbol:

#define DllImport   __declspec( dllimport )

DllImport int  j;
DllImport void func();

Użycie __declspec(dllimport) jest opcjonalne w deklaracjach funkcji, ale kompilator tworzy bardziej wydajny kod, jeśli używasz tego słowa kluczowego. Jednak do importowania pliku wykonywalnego należy użyć __declspec(dllimport) , aby uzyskać dostęp do publicznych symboli i obiektów danych biblioteki DLL. Należy pamiętać, że użytkownicy biblioteki DLL nadal muszą łączyć się z biblioteką importu.

Możesz użyć tego samego pliku nagłówka zarówno dla biblioteki DLL, jak i aplikacji klienckiej. W tym celu należy użyć specjalnego symbolu preprocesora, który wskazuje, czy tworzysz bibliotekę DLL, czy kompilujesz aplikację kliencką. Przykład:

#ifdef _EXPORTING
   #define CLASS_DECLSPEC    __declspec(dllexport)
#else
   #define CLASS_DECLSPEC    __declspec(dllimport)
#endif

class CLASS_DECLSPEC CExampleA : public CObject
{ ... class definition ... };

Co chcesz zrobić?

Co chcesz dowiedzieć się więcej?

Zobacz też

Importowanie do aplikacji