在 Visual Studio 2012 上构建 dll 版本时需要入口点

Posted

技术标签:

【中文标题】在 Visual Studio 2012 上构建 dll 版本时需要入口点【英文标题】:entry point required when building dll release on visual studio 2012 【发布时间】:2016-04-20 21:51:25 【问题描述】:

我是 DLL 开发的新手,感谢任何帮助。

我有一个现有的 c++ 项目,我正在尝试使用 Visual Studio 2012 将其构建到 dll 中。我将目标扩展和配置类型更改为 dll。我还排除了我的主要功能。当我重建它时,编译器抱怨:

LINK:致命错误 LNK1561:必须定义入口点

当我将主函数移回后,我可以成功构建项目。

我只想制作一个 dll,因为我需要将函数和对象用于另一个项目,所以我认为我不需要 dll 的主函数。具有主要功能是解决此错误的唯一方法吗?提前谢谢你。

【问题讨论】:

【参考方案1】:

就像一个程序需要main、DLLs require DllMain,一个启动和处理DLL加载和卸载的地方。

而不是 DLL consider a static library。开销要少得多,没有DllMain 和支持加载器和卸载器,它们直接内置在编译后的可执行文件中,因此您不必携带额外的文件,也不必冒使用过期 DLL 或某些 DLL 的客户端的风险恶意工具用他们的替换你的 DLL。如果您不需要用替换替换库的能力,那么 DLL 可能是矫枉过正。

【讨论】:

非常感谢您的回答。我会看看两者! 静态库是您只想组织代码的理想选择,尤其是当您想与他人共享它们时。也就是说,请记住链接器的性能取决于被链接的 DLL 或 EXE 的总大小,因此使用 DLL 可以缩短链接时间。此外,您已经定义了带有 DLL 的“ABI”,因此您可以只更改 DLL 而无需重新构建 EXE——这对于某些应用程序来说实际上是一种安全风险!另请记住,静态库 .lib 文件本身特定于创建它的编译器版本(即 VS 2012 内置库不应与 VS 2015 一起使用)。

以上是关于在 Visual Studio 2012 上构建 dll 版本时需要入口点的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2017 构建工具未安装在 Windows Server 2012 上

无法在 Windows XP 上运行 Visual Studio 2012 程序

MSbuild是否要求在构建服务器上安装Visual Studio?

在 TFS 2012 beta 中构建失败,但该解决方案在 Visual Studio 2012 RC 中成功构建

SpecsFor MVC / MSBuild.exe 无法在 Visual Studio 2012 中正确构建/发布项目

Visual Studio 2012 命令行内置