调用DLL出错
typedef void (*MYPROC)(void);
MYPROC dllproc;
HINSTANCE hdll=LoadLibrary("Dllsam.dll");
if (hdll!=NULL){
dllproc=(MYPROC)GetProcAddress(hdll,"?ShowMsg@CDllsamApp@@QAEXXZ");
dllproc();
}else{
MessageBox("Fail to load dll");
}
上面调用没错,但换成下面的语句就报错
dllproc=(MYPROC)GetProcAddress(hdll,"ShowMsg");
问题点数:10、回复次数:6Top
1 楼onlover(爪哇鸟)回复于 2006-03-03 14:08:01 得分 0
救救我啊Top
2 楼roselu(泥人)回复于 2006-03-09 16:54:09 得分 0
学习Top
3 楼chenyulin(chen)回复于 2006-03-10 08:42:43 得分 0
在定义和调用时加_stdcall.
Top
4 楼blueriver1981(b.l.u.e.river)回复于 2006-03-10 17:17:42 得分 0
是编写DLL时的问题:
你声明导出函数时我估计是这样的:
__declspec(dllexport) void ShowMsg();
应该写成:
extern "C" __declspec(dllexport) void ShowMsg();
这是由于C++编译器对函数名作了处理, 具体百度搜一下.Top
5 楼zhaotao0982(victor)回复于 2006-03-10 17:23:31 得分 0
blueriver1981(b.l.u.e.river)说得对,照他的作就可以了
Top
6 楼lizhongbo1982(枫叶渐红)回复于 2006-03-11 23:12:44 得分 0
报什么错?Top




