Atl com 支持MFC没有DLLMian()函数的替代解决办法
2017-05-03 15:18
246 查看
在建立atl com接口DLL时,如果加入了Mfc支持,系统就会自动建立DLLMain函数,而且函数的位置特殊,可参见:http://www.cnblogs.com/helloboyang/p/5237648.html,
如果程序需要在DLLMain()函数中实现处理过程怎么办?如果在该项目下强行加入DLLMian会报:dllmain已经在 中定义 错误。
受上面文章启发,可利用该CWinApp 派生类的 InitInstance 成员函数实现目的 。如:
这是我的一个项目内,dllmain.cpp内容,我在其中修改了InitInstance()函数,增加了获取当前路径,已实现载入配置文件的目的。
项目名称为:ATLcomMfc,建立项目后自动生成dllmain.cpp文件,在该文件内生成了CATLcomMfcApp类,该类派生于CWinApp
后期又看了这篇文章:http://www.cnblogs.com/profession/p/5849440.html
没有测试,可供参考。
如果程序需要在DLLMain()函数中实现处理过程怎么办?如果在该项目下强行加入DLLMian会报:dllmain已经在 中定义 错误。
受上面文章启发,可利用该CWinApp 派生类的 InitInstance 成员函数实现目的 。如:
这是我的一个项目内,dllmain.cpp内容,我在其中修改了InitInstance()函数,增加了获取当前路径,已实现载入配置文件的目的。
项目名称为:ATLcomMfc,建立项目后自动生成dllmain.cpp文件,在该文件内生成了CATLcomMfcApp类,该类派生于CWinApp
class CATLcomMfcApp : public CWinApp { public: // 重写 virtual BOOL InitInstance(); virtual int ExitInstance(); DECLARE_MESSAGE_MAP() }; BEGIN_MESSAGE_MAP(CATLcomMfcApp, CWinApp) END_MESSAGE_MAP() CATLcomMfcApp theApp; BOOL CATLcomMfcApp::InitInstance() { {//获取dll文件路径,相当于在DLLMain()函数中添加,m_hInstance为当前dll句柄 TCHAR szPathname[_MAX_PATH]; GetModuleFileName(m_hInstance, szPathname, _countof(szPathname)); PathRenameExtension(szPathname, _T(".config")); ATLTRACE("/n<<<<<DLL配置文件路径:%S/n", szPathname); } #ifdef _MERGE_PROXYSTUB if (!PrxDllMain(m_hInstance, DLL_PROCESS_ATTACH, NULL)) return FALSE; #endif return CWinApp::InitInstance(); } int CATLcomMfcApp::ExitInstance() { return CWinApp::ExitInstance(); }
后期又看了这篇文章:http://www.cnblogs.com/profession/p/5849440.html
没有测试,可供参考。
相关文章推荐
- Linux wait 函数实参为指针时,没有预期结果,原因及其解决办法
- MFC类成员函数作为线程函数的解决办法
- C:\Windows\system32\MSVCR100.dll 没有被指定在 Windows 上运行,或者它包含错误。请尝试使用原始安装媒体重新安装程序,或联系您的系统管理员或软件供应商以获取支持。【解决办法】
- MFC中"没有找到MFC90ud.dll的解决办法
- MFC项目使用Win7自带语音库(包含COM函数返回 “没有注册类”解决方式)
- MFC 下使用Listbox Control 的addstring 函数 乱码解决办法
- MFC类成员函数作为线程函数的解决办法
- VC6.0重装后没有MFC模块的解决办法
- DLL 支持MFC 没有DLLMAIN函数
- MFC dll 类型是 共享 规则 导出对话框函数使用出错解决办法
- 解决PHP中json_encode()不支持中文的替代函数
- MFC中 CString类型用fprintf 函数写到文件中乱码的解决办法
- MFC中"没有找到MFC90ud.dll的解决办法
- dsoframer 注册控件后在某些机器调用部分函数时提示"没有注册接口"的解决办法
- MFC重写OnCtlColor函数造成的文本框文字、闪烁重叠的问题解决办法
- MSDN两天没有办法使用, 提示"当前子集中没有该选项,请选择其他子集",问题解决了
- dhtmledit不支持此接口错误的解决办法
- IIS与ASP.Net没有关联解决办法
- php 之 没有mysql支持时的替代方案
- php 之 没有mysql支持时的替代方案