DLL导出有两种方式:
一、使用__declspec(dllexport);
二、采用模块定义(.def)文件声明,(.def)文件为链接器提供了有关被链接程序的导出、属性及其他方面的信息。(模块定义.def文件);
方式一、使用__declspec(dllexport);
#ifdef DLLWRAP_EXPORTS #define DLLWRAP_API __declspec(dllexport) #else #define DLLWRAP_API __declspec(dllimport) #endif
导出变量:
DLLWRAP_API int n;
导出函数:
DLLWRAP_API int fndllwrap(void) { return 1; }
导出class:
class DLLWRAP_API Cdllwrap { public: Cdllwrap(void); // TODO: add your methods here. }; // This is the constructor of a class that has been exported. Cdllwrap::Cdllwrap() { return; }
方式二、采用模块定义.def文件
extern "c" { int add(int a, int b); } int add(int a, int b) { return a +b; }
test.def
;导出dll函数
DEESCRIPTION
LIBRARY dlltest
EXPORTS
add @1 PRIVATE