2011-08-07 23 views
5

Windows'da C++ 'da dllexport, dllimport ile ilgili bazı sorularım var. dllexport kullanarak işlevleri aktaran bazı module.cpp ve module.h var. ve moduleWrapper.h da dllimport kullanarak module.cpp işlevlerini içe aktardığımı varsayalım.dllimport ile dllexport arasındaki bağlantı

Birisi lütfen neden benim moduleWrapper.cpp ve moduleWrapper.h numaralarını yazmayı özleyebilirim.

__declspec(dllexport) void f(); 

: Ben bağlayıcı Anladığım kadarıyla herhangi bir açıklama

+0

Daha fazla bilgiye ihtiyacımız var. İthalat ve ihracatınızın neye benzediğini görmek gibi. –

+0

Bir modül.dll var mı? Ve linker için bir module.lib? –

cevap

7

için şimdiden module.cpp gelen işlevler sayesinde adresleri nereden biliyor anlayamıyorum, sen module.h içinde böyle bir şey var ve sonra, kendi moduleWrapper.cpp içinde benzer bir açıklama vardır:

bir işlev bildiriminde olarak sayılır
__declspec(dllimport) void f(); 

, bu nedenle module.h dahil etmek için herhangi ihtiyacını da ortadan kaldıracaktır.

PROJECTAPI void f(); 

Bu şekilde, dllexport çevirmek olacaktır: böyle başlık dosyasında işlevini bildirerek sonra

#ifdef PROJECTNAME_EXPORTS // (the default macro in Visual Studio) 
#define PROJECTAPI __declspec(dllexport) 
#else 
#define PROJECTAPI __declspec(dllimport) 
#endif 

Ve: yaygın bitti yolu senin dosya eklemek aşağıdaki kodu koyarak gereğidir DLL'nizi derlerken ve DLL'inizin parçası olmayan ve üstbilgiyi kullanan tüm dosyalarda dllimport için.

İlgili konular