学习DLL时,建立了一个规则的MFC DLL程序,就添加了一个对话框,IDD_DIALOG_HELLO ,此时编译时候没问题。为了调用,我另外添加了一个CPP文件,内容如下:#include "StdAfx.h"
#include "DllDialog.h"/*extern "C" __declspec(dllexport) void ShowDlg(void)
{
CDllDialog dllDialog;
dllDialog.DoModal();
} */编译结果为:
error C2065: 'IDD_DIALOG_HELLO' : undeclared identifier
error C2057: expected constant expression但是在DllDialog.h中,IDD_DIALOG_HELLO 是MFC自动定义了的 ,其为: enum { IDD = IDD_DIALOG_HELLO };
望高手能赐教。多谢!
#include "DllDialog.h"/*extern "C" __declspec(dllexport) void ShowDlg(void)
{
CDllDialog dllDialog;
dllDialog.DoModal();
} */编译结果为:
error C2065: 'IDD_DIALOG_HELLO' : undeclared identifier
error C2057: expected constant expression但是在DllDialog.h中,IDD_DIALOG_HELLO 是MFC自动定义了的 ,其为: enum { IDD = IDD_DIALOG_HELLO };
望高手能赐教。多谢!
void CCallDllDlg::OnButCall()
{
// TODO: Add your control notification handler code here typedef void (* callfun)(void); HINSTANCE hinstance;
hinstance = LoadLibrary("C:\\Downloads\\CtDll\\Debug\\CtDll.dll");
if ( hinstance == NULL)
{
MessageBox("加载DLL失败");
} callfun call = (callfun)GetProcAddress( hinstance, "ShowDlg");
if ( call == NULL)
{
MessageBox("调用程序失败");
} call();
}
为什么不弹出对话框? 跟踪调试,hinstance 和 call 都不为空, 跟网上的列子比较时,有区别的在于call的值后面还显示了_ShowDlg,是不是调用方式不对?要怎么改?多谢赐教
{
CDllDialog dllDialog;
dllDialog.DoModal();
}加入
extern "C" __declspec(dllexport) void ShowDlg(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CDllDialog dllDialog;
dllDialog.DoModal();
}