大家好,我使用C++类做成DLL,静态调用都成功了,但是动态调用时GetProcAdress一直返回0.DLL已经加载成功了。
DLL头文件:
namespace MathFuns
{
class MyMathFun
{
public:
//return a + b
_declspec(dllexport) double Add(double a, double b);
//return a - b
_declspec(dllexport) double Subtract(double a, double b);
//return a * b
_declspec(dllexport) double Multiply(double a, double b);
//return a / b
_declspec(dllexport) double Divide(double a, double b);
};
}
Dll调用CPP
int main()
{
double a = 10, b = 0;
typedef double (*pAdd)(double a, double b);
HINSTANCE hDll = NULL;
hDll = LoadLibrary(L"MathFuncsDll.dll");
if(NULL == hDll)
{
cout << "hDll is null!" << endl;
}
pAdd Add = (pAdd)GetProcAddress(hDll, "Add");
if(NULL == Add)
{
// handle the error
FreeLibrary(hDll);
cout << "GetProcAddress Err! " << GetLastError() <<endl;
Sleep(INFINITE);
}
cout << " a + b = "<< Add(a, b) << endl;
Sleep(INFINITE);
return 0;
}
执行后会出现:GetProcAddress Err! 0
麻烦大家帮我看下,谢谢了!
http://www.cnblogs.com/lhbssc/archive/2012/02/08/2342853.html
12行,函数指针的名字不要和函数名字相同。