1

我在 VS2010 中有一个 C 控制台程序,我想将其作为单个项目进行编辑/调试/构建。也就是说,我想编写和调试它,就好像它是一个香草控制台 exe,但让它产生一个 dll 作为副产品。我在 SO 上找到了以下信息(制作 C# 项目 DLL 和 EXE

DLL 项目应该包含所有可重用的代码。正常项目应该是您正在构建的应用程序,它将引用您的可重用 DLL。这样,您可以在 DLL 项目中构建一个框架,该框架可用于您未来的任何项目。

在其他地方,我发现了这个:https ://stackoverflow.com/questions/7054481/how-to-produce-a-mix-of-dll-and-exe-in-one-c-sharp-project

您可以像引用 dll 一样引用 .Net 可执行文件,但您可以考虑将 exe 文件复制到具有相同名称的 dll 文件中...您可以使用 Visual Studio 构建后事件为您的项目自动执行此过程. 这将在每次成功构建时处理创建 dll 副本: copy "$(TargetPath)" "$(TargetDir)$(TargetName).dll"

似乎第一个选项意味着维护 2 个不同的项目。有没有理由这样做,而不是按照第二篇文章的建议,只复制我的 exe 并将扩展名从 exe 更改为 dll?

4

1 回答 1

0

Hans Passant 回答了这个问题,但我无法将其标记为已回答,因为它是评论。所以这是他的回答:

“这在托管语言中是可能的,但在 C 语言中是不可能的。本机 DLL 具有不同的 CRT 启动代码。本机 EXE 不可重定位并且不支持导出的函数。更大的问题是,如果可能的话,你会做什么” d 写在你的 main() 函数中。你不能写在你的 EXE 项目的 main() 函数中。只写单元测试来测试导出的函数,因为这是使用你的 DLL 的任何代码唯一可用的东西。还考虑一个第三个创建静态库的项目,一个你可以在你的 DLL 和 EXE 项目中链接的项目”

于 2012-05-08T18:33:50.720 回答