【问题标题】:entry point required when building dll release on visual studio 2012在 Visual Studio 2012 上构建 dll 版本时需要入口点
【发布时间】:2023-03-11 23:47:01
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c++ visual-studio-2012 dll


    【解决方案1】:

    就像一个程序需要mainDLLs 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 一起使用)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 2011-08-05
    • 1970-01-01
    • 2014-01-18
    相关资源
    最近更新 更多