调用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")这种初始化就加载的方式来调用就会报类似于下面的错误:
看到红色框内格式的名字,就知道这是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); }