MFC 12.0中如何将.dll项目转为.exe

How to convert .dll project into .exe in MFC 12.0

我在 MFC 中有一个最初作为 .dll 项目开发的项目,但我想将此项目转换为 .exe 应用程序。我已经更改了项目设置,如下所示,但没有帮助。

编辑: 此外,我已将链接器属性更改为 Project properties -> Linker -> General -> Output file .. set to .. .Debug\DirBkgndExt.exe

编译时出现以下错误。

我用谷歌搜索了一下,在一些博客上,人们建议将现有项目中的所有内容复制粘贴到可执行类型的新项目中。由于这个项目有点大,所以这个选项听起来不太好。

使用应用程序向导创建新项目并将所有源文件移动到新项目中可能更简单。

问题是向导添加了一些 属性 工作表到项目中。当您更改项目类型时,它们可能不会切换。

在我的项目中,我可以在项目设置中看到我无法影响的 DLL 的链接器选项 /DLL。检查您的链接器设置并查看命令行选项。

同时打开 属性 管理器并检查添加了哪些属性并替换它们。

但是再说一次:创建一个新的合适的项目和 move/add 源文件 into/to 它对我来说更简单。

你希望这里发生什么? DLL 没有入口点(它有,但对于独立应用程序没有入口点),那么当 exe 为 运行 时,软件应该做什么?您需要提供一个 'driver' 来启动您想要发生的任何事情。创建一个新的 exe 应用程序(win32 或控制台?),将 'bootstrapping' 代码复制到您现有的应用程序中,然后在那里执行 initialization/argument 解析等操作。

可能您应该进行单独的配置:一个构建为 dll,一个构建为 exe。然后使用宏来保留特定于每个构建的代码。这就是我为嵌入了 test/development UI.

的库所做的

我想我和你的处境非常相似,除了我有相关#defines 背后的代码,所以项目应该 能够构建为 . exe 很容易(比如 main())。

我翻转了你所做的相同设置,加上以下内容(在 VS2012 中):

在链接器 > 输入中,确保模块定义文件为空(对我来说它说 foo.def)

然后我可以构建一个可运行的 .exe