我有个dll的问题,很简单但是不知道怎么做了,希望给我解答一下。
调用的模块函数如下
{ int temp;
CString tempstr;
typedef int(*SHOWME)(void);
HINSTANCE hInstance;
SHOWME pFunction;
hInstance=::LoadLibrary("sample.dll");
pFunction=(SHOWME)GetProcAddress(hInstance,"ShowMe1");
temp=pFunction();//调用该DLL函数
tempstr.Format ("%d",temp);
AfxMessageBox(tempstr);
}
------------------------------------------------------------
dll的代码如下:
//Sample.cpp
#include <windows.h>
int ShowMe(void);
//DllEntryPoint为DLL入口点函数,负责初试化并终止DLL
BOOL WINAPI DllEntryPoint(HINSTANCE hDLL,DWORD dwReason,LPVOID Reserved)
{ switch(dwReason)
{ case DLL_PROCESS_ATTACH:
{ break; }
case DLL_PROCESS_DETACH:
{ break; } }
return TRUE; }
int ShowMe1(void)
{
//蜂鸣器响一下
MessageBeep((WORD)-1);
MessageBox(NULL,"你好!","Q",0);
return 1;
}
dll的def文件是这样的:
;Sample.def
;指出DLL的名字Sample,链接器将这个名字放到DLL导入库中
LIBRARY Sample
;定义导出函数ShowMe()为例
EXPORTS
ShowMe1
;def文件结束
------------------------------------
编译一切正常,但是执行到
temp=pFunction();
就出现了错误,提示是非法操作,是不是我的代码哪里写得有问题?帮我看看,纠正一下,谢谢