From: Franco B. <fra...@we...> - 2001-11-16 05:14:25
|
Am Donnerstag, 15. November 2001 19:43 schrieb Earnie Boyd: > Yes, but would you export the variable at creation. Why would you expo= rt > an externally declared variable? > > It seems right to > __declspec(dllexport) char * foo; > and to later in some other file to > __declspec(dllimport) extern char * foo; > but it seems wrong to > __declspec(dllexport) extern char * foo; > . It's probably semantics but I'm puzzled. > > Earnie. As long as one uses <C> or <extern "C"> for the symbols, it doesn't matte= r=20 weather you use __declspec(dllexport) or __declspec(dllimport) with C++ classes this is different: in the header : #ifdef __IN_DLL_ITSELF #define MYDLLEXP __declspec(dllexport) #else=20 #define MYDLLEXP __declspec(dllimport) #endif class MYDLLEXP foo{ public: =09foo(); }; when bulding the DLL __IN_DLL_ITSELF has to be defined, so when=20 including the header the class is known to be exported form the DLL. when using the DLL __IN_DLL_ITSELF must not be defined, so it's clear th= at=20 the class is imported from a DLL. Ciao, Franco |