在 Windows 下把符号从 DLL 中导出,常见有两种写法,分别对应导出类和导出 C 风格函数。
情况一:导出类
当需要把一个 C++ 类整体从 DLL 中暴露出去时,在类名前加上 _declspec(dllexport) 即可,类里的公有成员都会随之导出。
class _declspec (dllexport) A
{
};
情况二:导出 C 函数
如果希望以 C 风格函数的形式导出,需要同时用 extern "C" 和 _declspec(dllexport)。extern "C" 的作用是禁用 C++ 的名字修饰,这样生成的符号名就是函数本身的名字,便于其他语言或模块按名字加载。
extern "C" void _declspec (dllexport) pri();
//没有修饰符,产生的名字就是函数名pri