您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> VC/MFC >> DLL调用的的时候,编译通过,运行的时候提示内存不可读

DLL调用的的时候,编译通过,运行的时候提示内存不可读

来源:网络整理     时间:2016/8/14 20:17:50     关键词:

关于网友提出的“ DLL调用的的时候,编译通过,运行的时候提示内存不可读”问题疑问,本网通过在网上对“ DLL调用的的时候,编译通过,运行的时候提示内存不可读”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: DLL调用的的时候,编译通过,运行的时候提示内存不可读
描述:

dll

这个的DLL的代码:
#include 
#include 
extern "C"  _declspec(dllexport) VOID msgbox(char *szmsg);
VOID msgbox(char *szmsg)
{
char szMduleName[MAX_PATH]={0};
GetModuleFileName(NULL,szMduleName,MAX_PATH);
    MessageBox(NULL,szmsg,szMduleName,MB_OK);
}
BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, void* lpReserved) 
{
    
    switch (dwReason)
    {
    case DLL_PROCESS_ATTACH:
{
msgbox("DLL_PROCESS_ATTACH");
break;
}
case DLL_PROCESS_DETACH:
{
  msgbox("DLL_PROCESS_DETACH");
           break;
}
    }
    return true;
}

#include 
typedef VOID (*PFUNMSG) (char *);
int main()
{
HMODULE hmodule=LoadLibrary("FirstDLL.dll");
    if (hmodule=NULL)
    {
MessageBox(NULL,"FirstDLL.dll不存在!","加载失败",MB_OK);
return -1;
    } 
PFUNMSG pfunmsg=(PFUNMSG)GetProcAddress(hmodule,"msgbox");
pfunmsg("hello first dll");
return 0;
}

这个是调用DLL的代码。
应该会弹出3个窗口,第一个是DLL_PROCESS_ATTACH,第二个是hello first DLL,第三个是DLL_PROCESS_DETACH。
解决方案1:

既然你的函数时按照C的模式导出的,那你在调用时也应该声明为extern "C"的形式,不然函数名称不对,导致函数地址出错


以上介绍了“ DLL调用的的时候,编译通过,运行的时候提示内存不可读”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3282825.html

相关图片

相关文章