创建一个主程序,在该主程序的某个函数中,做如下事情:1 hDll = LoadLibrary(_T("test.dll"));
2 TestFunProc proc = GetProcAddress(hDll, "TestFun");
3 proc();test.dll直接由向导生成,MFC DLL。然后添加并导出一个函数TestFun。void TestFun()
{
CFileDialog dlg(TRUE);
dlg.DoModal();
}
运行主程序,能够弹出对话框,但是主程序在退出的时候,会发生异常,这是很奇怪的一个事情。大家有谁碰到过这个问题吗?
2 TestFunProc proc = GetProcAddress(hDll, "TestFun");
3 proc();test.dll直接由向导生成,MFC DLL。然后添加并导出一个函数TestFun。void TestFun()
{
CFileDialog dlg(TRUE);
dlg.DoModal();
}
运行主程序,能够弹出对话框,但是主程序在退出的时候,会发生异常,这是很奇怪的一个事情。大家有谁碰到过这个问题吗?
解决方案 »
- CComPtr<IDirectSound8> 静态成员变量初始化
- 基于对话框主窗口设置风格
- 有没有画渐变色显示某一个区域内温度梯度的VC类?
- 补分贴,非请勿回
- 请问,列举串口时,如何判断哪个是红外端口
- 各位帮忙啊!画线的代码很短,为什么会死程序。
- 到ms网站上下载签名工具,可是老是下不下来,哪位朋友给个其他的连接
- 高手请进,一个看起来很简单,但是。。。。。。。。。。。
- f:\vc\深入浅出\frame7.03\afxmsg_.h(3) : error C2011: 'AfxSig' : 'enum' type redefinition
- 请各位高手指教:有关释放服务器端组件进程的问题,谢谢了
- VC怎么创建一个没有父进程的进程
- 中断屏蔽disable()为什么不能运行
这个不一定,只要TestFunProc定义和TestFun一致就行了。
{
//AFX_MANAGE_STATE(AfxGetAppModuleState());
//AFX_MANAGE_STATE(AfxGetStaticModuleState()); CFileDialog dlg(TRUE);
dlg.DoModal();
}
在DestroyWindow处会出错跨模块内存分配解决方法很多,google一下即可
把CFileDialog构造的参数都填上,特别是pParentWnd
typedef void (*OpenFileDlgProc)(CWnd* parent);
TestFun输出写在def文件里面。
主程序是新建的单文档工程。
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
} if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
} // TODO: Delete these three lines if you don't want the toolbar to be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar); //就这么写的退出没什么异常
typedef void (*TestFunProc)();
HINSTANCE h = LoadLibrary(_T("test.dll"));
TestFunProc proc = (TestFunProc)GetProcAddress(h, "TestFun");
proc(); return 0;
}
1、void OpenFileDlg(); 函数建议修改成 BOOL OpenFileDlg();2、最好申明是 __cdecl 或者 WINAPI;我使用 BOOL ... __cdecl 测试了,没有问题。