写了一个非MFC dll,实现平方功能,导出函数如下:
extern "C" __declspec(dllexport) double Square(double d);
在MFC程序中如下显式调用:
typedef UINT (CALLBACK* lpSquare(double);
HINSTANCE hDll;
lpSquare Square;
hDll=LoadLibrary("test");
if (hDll!=NULL)
{
Square=(lpSquare)GetProcAddress(hDll,"Square");
if (!Square)
{
FreeLibrary(hDll);
}
else
{
double tt=Square(2); -----------------1
}
}
else
{
MessageBox("test","没有找到dll",MB_OK");
}
问题就出在1处,在调试中已经看到调用了dll中函数,并得到了正确的值,但在赋值给tt时,发生错误,不知为什么,请各位大虾执教,多谢了
extern "C" __declspec(dllexport) double Square(double d);
在MFC程序中如下显式调用:
typedef UINT (CALLBACK* lpSquare(double);
HINSTANCE hDll;
lpSquare Square;
hDll=LoadLibrary("test");
if (hDll!=NULL)
{
Square=(lpSquare)GetProcAddress(hDll,"Square");
if (!Square)
{
FreeLibrary(hDll);
}
else
{
double tt=Square(2); -----------------1
}
}
else
{
MessageBox("test","没有找到dll",MB_OK");
}
问题就出在1处,在调试中已经看到调用了dll中函数,并得到了正确的值,但在赋值给tt时,发生错误,不知为什么,请各位大虾执教,多谢了
typedef double (_cdecl* lpSquare)(double);
或
typedef double (* lpSquare)(double);__stdcall和_cdecl的参数入栈方向不一样