1. 导出库使用def模块定义文件导出
使用模块定义文件,并在其中指定导出函数在编译后的DLL中的名称不会被改变.
编译前在def文件中指定什么名称,在编译后就使用该名
2.导出库使用C语言方式编译并指定使用__cdecl调用约定
使用 _declspec(dllexport) 导出函数 ,让C++编译器使用C语言方式编译C++源码,并指定调用约定为__cdecl 这样编译后的函数名不会被动.
让C++编译器使用C方式编译源码有两种方法:
一种是通过修改后缀名为.c 这样C++编译器认为是C项目,会使用C编译器进行编译
另一种是在C++项目的.h文件中使用 extern "C" 来表示单个函数使用C方式编译
如果有多个函数要使用C方式进行编译可使用下面方式
extern "C"
{
//这里要使用C方式编译的多个方法
}
示例:
extern "C" __declspec(dllexport) int __cdecl add(int a,int b);
extern "C"
{
__declspec(dllexport) int __cdecl add(int a,int b);