c++调用C语言写的DLL


调用dll有两种方式

方式一:初始化加载lib:http://wowoboke.com/cpp/6.html

方式二:windowAPI动态加载dll:http://wowoboke.com/cpp/7.html


当使用c++调用c语言的dll时,如果使用方式二:windowAPI动态来调用没有任何问题

但是使用#pragma comment(lib,"xxxx.lib")这种初始化就加载的方式来调用就会报类似于下面的错误:

image.png

看到红色框内格式的名字,就知道这是c++编译的dll函数名格式 可参考:http://wowoboke.com/cpp/5.html

原因是c++编译会去找以c++规则的函数名字,所以会找不到这样的名字

解决方法就是在引用dll的头文件时, 告诉c++ 用c语言的规则格式去找。

extern "C"{ //告诉C++编译器,这些函数是C语言编译的,用C语言的规则去找函数名
	__declspec(dllexport) void SayHello();
	__declspec(dllexport) int myfunAdd(int a, int b);
	__declspec(dllexport) int myfun2(int a, int b);
}