MFC 和动态链接

Posted

技术标签:

【中文标题】MFC 和动态链接【英文标题】:MFC and dynamic linking 【发布时间】:2013-08-21 09:24:32 【问题描述】:

我遇到了 MFC 问题。

我已经阅读了很多关于链接、静态与动态以及它们之间的区别的文章。

我的项目是一个开源项目,有大约 2000 个文件我还没有写,我刚刚调整了项目。

我现在的问题是我希望能够将程序克隆到另一台计算机上。 第一台计算机可以运行该程序,我认为这是可能的,因为安装了 VS 2008 proffesional,这意味着所有 DLL 都存在。在第二台计算机上,程序启动但死机,我认为这意味着它找不到 DLL 或者可能是错误的版本。

我尝试过静态链接,但由于项目包含大量 _AFXDLL 代码,因此无法编译。我已经使用depends.exe 生成依赖关系报告,解析报告并检查所有文件是否存在。在两台计算机上都存在所有 DLL 文件。

我的问题是,是否知道我的程序为什么会冻结?在机器上安装 VS 似乎可以解决问题,所以我假设 VS pro 复制了一些我不知道的重要文件。如果是这样,有没有找到这些文件的好方法?

【问题讨论】:

Freez in the sence stop working or ??你用过LoadLibrary吗??我没有错,你在处理动态链接.. 箭头变成了沙漏。我搜索了另一台计算机,可能我还没有重新分发正确版本的 DLL。找到要重新分发 dll 的链接msdn.microsoft.com/en-us/library/8kche8ah(v=vs.90).aspx 【参考方案1】:

问题现已解决!

答案很简单,CRT 和 MFC 文件有不同的版本。为了确保版本始终相同,可以将文件与应用程序一起重新分发。 Jochen Kalmbach 写了一个非常简单而精确的教程,教你如何做到这一点here。

我希望这个答案对其他人有所帮助! :)

【讨论】:

以上是关于MFC 和动态链接的主要内容,如果未能解决你的问题,请参考以下文章

DLL动态链接库如何共享数据和如何创建纯资源DLL

(转载)DLL动态链接库编程入门之二:非MFC DLL

MFC加载动态链接库方法

(转载)DLL动态链接库编程入门之五:MFC扩展DLL

使用 /clr 编译 MFC 应用程序(步骤 1:链接到动态 DLL)

VC++程序设计与应用--动态链接库