在 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 中正确构建/发布项目