是否可以在其“客户端”可执行文件正在运行时重新编译MFC DLL,并让可执行文件检测并获取新的更改?如果有可能,这是愚蠢的吗?能够在不重新启动exe的情况下重新编译DLL将在我的编码工作流程中节省一些时间。我使用的是Visual Studio 2008,代码是用本机C ++ / MFC编写的。我的代码更改完全包含在DLL中,而不是EXE。
谢谢!
答案 0 :(得分:2)
不幸的是,除非可执行文件支持热交换DLL,否则你无法做到。 Windows中的标准DLL加载机制将在进程开始时或首次使用DLL导出的函数时加载它,并且不会在文件中查看更改以便重新加载它。此外,根据DLL的加载方式,文件可能会被锁定以进行更改。
在重新编译之前,您必须停止客户端可执行文件。
答案 1 :(得分:1)
是的,这是可能的。您需要确保可执行文件显式加载您的DLL(通过LoadLibrary)。如果您的可执行文件隐式加载您的DLL,您将遇到Franci描述的问题。
在可执行文件运行时更新库:
如果你的DLL实现了任何COM对象,请告诉我,我会给你一些额外的提示。