为了账号安全,请及时绑定邮箱和手机立即绑定

初学DLL,求大神指点 ,为什么MFC调用DLL没报错,但是也没有调用DLL中的函数?

初学DLL,求大神指点 ,为什么MFC调用DLL没报错,但是也没有调用DLL中的函数?

C++
繁花不似锦 2023-04-22 17:13:15
代码在下面,麻烦诸位大神指教:DLL代码:.cpp:extern "C" __declspec(dllexport) void open(){AfxMessageBox(_T("录入出错!"));CCombineFile dlg;dlg.DoModal();}.h:extern "C" __declspec(dllexport) void open();编译通过后,将.dll复制到MFC的Debug,.lib、.h复制到MFC目录下,.h中的dllexport也改成了dllimportMFC代码:.cpp:#include "Combine.h"#pragma comment(lib,"dlltest.lib") extern "C" __declspec(dllimport) void open();void CTextDlg::OnOK() {// TODO: Add extra validation hereHINSTANCE hDll; //DLL句柄  hDll = LoadLibrary("Combine.dll");  if (NULL==hDll)  {  MessageBox("DLL加载失败");  }  FARPROC popen = GetProcAddress(hDll,"open");  if (NULL==popen)  {  MessageBox("DLL中函数寻找失败");  }  open();}
查看完整描述

1 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

带有对话框资源的MFC扩展DLL,不能简单的使用LoadLibrary这种形式调用,因为这样不能加载获得DLL中的资源,而对话框是需要资源支持的(而不是简单的一个函数),这样肯定失败。
MFC扩展DLL,带有资源的要使用AfxLoadLibrary / AfxFreeLibrary 来调用。

查看完整回答
反对 回复 2023-04-26
  • 1 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信