目的:其他工程引入头文件,而不必做任何修改。
导出函数声明在同一头文件的实现如下:
#pragmaonce
// stdafx.h 中定义了宏_AFXEXT,在dll实现源文件工程中,定义了;但是在引入调用的工程中不定义
// 则自动实现导入导出设置
#include"stdafx.h"
#ifdef DLLEXT
#define DLLEXT_API extern "C" _declspec(dllexport)
#else
#define DLLEXT_APIextern"C"_declspec(dllimport)
#pragmacomment(lib, "****.lib")
#endif
DLLEXT_APIvoidWINAPIFunc1(void);
DLLEXT_APIvoidWINAPIFunc2(void);
DLLEXT_APIvoidWINAPIFunc3(void);
然后在def文件中声明(在def文件中声明是为了避免编译时,dll中函数名改变; 如果上面没有WINAPI,def中可以不用定义,_stdcall(WINAPI在win32下是_stdcall)等约定命名改变的原因):
Func1 @1
Func2 @2
Func3 @3
这里加WINAPI的原因是为了遵循标准约定,从而让vb等语言也能调用。