【问题标题】:Linking *.lib files with MinGW将 *.lib 文件与 MinGW 链接
【发布时间】:2011-11-06 15:35:48
【问题描述】:

是否可以将 *.lib 文件与 MinGW 链接(我在 Eclipse 中使用它)?

我正在使用 libcurl+OpenSSL,我不明白我的错误是因为我尝试在 MinGW 中使用 .lib-files 还是其他错误:

..\lib/libeay32.lib(tmp32/asn_mime.obj):(.text[_SMIME_text]+0x6): undefined reference to `_chkstk'
..\lib/libeay32.lib(tmp32/asn_mime.obj):(.text[_SMIME_text]+0xb): undefined reference to `__security_cookie'
..\lib/libeay32.lib(tmp32/asn_mime.obj):(.text[_SMIME_text]+0x63): undefined reference to `@__security_check_cookie@4'
..\lib/libeay32.lib(tmp32/asn_mime.obj):(.text[_SMIME_text]+0x19e): undefined reference to `@__security_check_cookie@4'
..\lib/libeay32.lib(tmp32/ech_ossl.obj):(.text[_ecdh_compute_key]+0x6): undefined    reference to `_chkstk'
..\lib/libeay32.lib(tmp32/bio_asn1.obj):(.text[_asn1_bio_set_ex]+0x6): undefined reference to `_chkstk'
..\lib/libeay32.lib(tmp32/bio_asn1.obj):(.text[_asn1_bio_get_ex]+0x6): undefined reference to `_chkstk'
..\lib/libeay32.lib(tmp32/bio_asn1.obj):(.text[_BIO_asn1_set_prefix]+0x6): undefined reference to `_chkstk'
..\lib/libeay32.lib(tmp32/bio_asn1.obj):(.text[_BIO_asn1_get_prefix]+0x6): undefined reference to `_chkstk'
..\lib/libeay32.lib(tmp32/bio_asn1.obj):(.text[_BIO_asn1_set_suffix]+0x6): more undefined references to `_chkstk' follow
..\lib/ssleay32.lib(tmp32/ssl_lib.obj):(.text[_SSL_has_matching_session_id]+0xb): undefined reference to `__security_cookie'

【问题讨论】:

    标签: linker mingw


    【解决方案1】:

    mingw 也接受带有 .lib 扩展名的库。

    例如,一个名为 libsample.lib 必须链接为

    -L -llibsample

    参考: http://www.mingw.org/wiki/Specify_the_libraries_for_the_linker_to_use

    【讨论】:

    【解决方案2】:

    新的 mingw 版本支持链接 lib 文件。但是我遇到了 .lib 带有前缀 libxxxx.lib 的问题。它在链接中省略了前缀 lib。所以让它像 libname>.lib

    还有一些方法可以将 .lib 转换为 .a 例如:lib2a 你也可以使用它。

    【讨论】:

    • 要完全指定库名称,请使用 : 前缀。例如-l:libxxxx.lib.
    • 相反,当链接 .lib 文件时,您需要删除 lib 前缀,例如-lssl 将使链接器查找 ssl.lib
    【解决方案3】:

    可能不会。 mingw的静态库格式是*.a.

    给定平台的动态库由操作系统加载器标准化,必须能够加载它们。

    静态库只需要被工具链的链接器理解,因此不太兼容交叉编译器。 Afaik *.lib 文件甚至不兼容所有 MSVC 版本。

    稍后添加,由于纠缠 cmets: 较新版本的 mingw 也支持 .lib 文件,但您在 11 年问过您的问题,那时您可能不会拥有它们。

    【讨论】:

    • 对于反对票:请注意,此答案明显写在 其他答案之前。
    • 由于它显然已经过时,您可能应该考虑调整您的答案。这将使您获得更多的反对票,并帮助人们找到他们个人问题的正确答案。
    • 这将使问题的答案没有问题。如果您认为该主题已过时或令人困惑,请投票关闭它,然后投票支持更新的主题。
    • 我不认为该线程已过时,只是您的回答。 “可能不是。”只是不再正确(已经有一段时间了),请参阅 Sasha 的答案,这应该是公认的答案。但是,嘿,那是你的反对意见,随你喜欢;)
    • 不要叫乐于助人的 cmets 纠缠,这有点辱骂。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多