动态库中的代码:
extern "C"
{
__declspec(dllexport) int __stdcall add(int a,int b)
{
return a+b;
}
__declspec(dllexport) int sub(int a,int b)
{
return a-b;
}
}
调用dll代码:
#include<iostream>
#include<windows.h>
using namespace std;
typedef int (/*__stdcall*/ * Func_1)(int ,int );
typedef int (* Func_2)(int ,int );
int main()
{
HINSTANCE hinsdll;
hinsdll=LoadLibrary(L"Text.dll");
if(hinsdll==NULL)
{
FreeLibrary(hinsdll);
exit(0);
}
Func_1 add;
Func_2 sub;
add=(Func_1)GetProcAddress(hinsdll,"_add@8");
sub=(Func_2)GetProcAddress(hinsdll,"sub");
if(add==NULL)
{
cout<<"获取函数add地址失败!"<<endl;
FreeLibrary(hinsdll);
exit(0);
}
if(sub==NULL)
{
cout<<"获取函数sub地址失败!"<<endl;
FreeLibrary(hinsdll);
exit(0);
}
cout<<add(5,9)<<endl;//在调用的时候出错,Why?
cout<<sub(6,9)<<endl;
return 1;
}
这是为什么呢?能够获取函数地址,但是调用出错......