将工程导出的dll、h、lib作为动态库给其他工程使用时,dll需要提供def文件来指引找到lib文件。使用dllexport和dllimport声明可以省略给出def文件,使用方法如下:
globalDef.h:
#ifdef DLL_EXPORTS
#define GLOBALINTERFACE_API __declspec(dllexport)
#else
#define GLOBALINTERFACE_API __declspec(dllimport)
#endif
Interface.h:
#include “globalDef.h”
class GLOBALINTERFACE_API A{ static int a; }
Interface.cpp:
#include “Interface.h”
static A::a = 0;
user.cpp:
#include “Interface.h”
A::a = 1;
同时需要在导出的dll的工程中设置属性 - c/c++ - 预处理器 – 预处理器定义为DLL_EXPORTS。
为了使导出模块更通用,可以和extern “C”一起使用,将接口声明为C语言风格(对外剔除类的概念),使用方法如下:
G_API.h:
namespace ExternInterface {
extern "C" GLOBALINTERFACE_API void callInterface(bool iscall);
}
User.cpp:
ExternInterface:: callInterface(true);