-3

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

在此处输入图像描述

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

当我编译时,我收到以下错误。

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

在此处输入图像描述

4

3 回答 3

2

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

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

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

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

但同样:对我来说,创建一个新的适当项目并将源文件移动/添加到其中/向其中添加/添加源文件对我来说更简单。

于 2015-08-17T09:49:51.430 回答
1

你期望在这里发生什么?DLL 没有入口点(它有,但对于独立应用程序没有入口点),那么在运行 exe 时软件应该做什么?您需要提供一个“驱动程序”来启动您想要发生的任何事情。制作一个新的 exe 应用程序(win32 还是控制台?),将“引导”代码从中复制到您现有的应用程序中,并在那里进行初始化/参数解析等操作。

可能您应该进行单独的配置:一个构建为 dll,一个构建为 exe。然后使用宏来保留特定于每个构建的代码。这就是我为具有嵌入式测试/开发 UI 的库所做的。

于 2015-08-18T09:31:17.550 回答
0

我想我和你的情况非常相似,除了我在相关的#defines 后面有代码,因此项目应该能够很容易地构建为 .exe(如 main())。

我翻转了您所做的相同设置,以及以下设置(在 VS2012 中):

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

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

于 2016-08-12T21:19:28.813 回答