【问题标题】:Can't add static lib无法添加静态库
【发布时间】:2009-12-01 02:40:51
【问题描述】:

我正在尝试构建一个 DLL,它需要从 openssl 包中引用一个库,即 libeay32.dll。我似乎无法将其添加为属性页-> 通用属性-> 添加新引用下的引用,因为它给出错误“无法添加对文件 'C:\OpenSSL\libeay32.dll' 的引用,因为它既不是 . NET 程序集或注册的 Active X 控件。当我使用 Linker->Input->Additional Dependencies 并设置静态库“C:\OpenSSL\lib\libeay32.lib”时,我可以编译和运行它。但最终结果是我还需要包含 libeay32.dll。我做错了什么?

【问题讨论】:

  • 我建议用ssl,openssl标签标记它

标签: c++ dll linker openssl static-libraries


【解决方案1】:

你做的一切都是正确的。 “添加引用”适用于 .NET 程序集(以及通过 .NET COM 互操作使用的 COM 组件)。您尝试的第二种方法是对本机代码执行此操作的正确方法,但libeay32.lib 不是静态库;它是 DLL 的导出库。

【讨论】:

    【解决方案2】:

    正如 Pavel 所提到的,libeay32.lib 不是您的应用程序可以静态链接并运行的完整库。它用于解析对动态库、dll 的引用。因此,您的应用仍然需要 dll 才能运行。

    http://msdn.microsoft.com/en-us/library/f0z8kac4.aspx

    【讨论】:

    • 好吧,我的意思是构建一个 DLL,使用 OpenSSL 包中的函数进行一些加密。但我想进行构建,以便 DLL 可以包含(或合并?)openssl 所需的 libeay32.dll,这样客户就不必担心已经拥有 libeay32.dll。没有任何简单的方法可以做到这一点,还是我真的需要用我自己的项目重建 OpenSSL 的源代码?
    • 您可以将 libeay32.dll 与您的 dll 一起发布。如果您希望将 dll 作为单个文件分发,则必须使用 openssl 的静态库版本。如果尚未提供,则需要重建它。项目的“配置类型”属性控制是构建动态库还是静态库。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 2019-06-10
    • 1970-01-01
    • 2012-11-24
    • 2013-10-29
    • 2015-05-02
    • 1970-01-01
    相关资源
    最近更新 更多