【问题标题】:Can you statically link a specific library using visual-c++ on the command line?您可以在命令行上使用 visual-c++ 静态链接特定库吗?
【发布时间】:2015-02-12 01:10:26
【问题描述】:

更具体地说,我在 MingW 环境中使用了 visual-c++。我有一个这样定义 LDFLAGS 的生成文件:

LDFLAGS="-MACHINE:X64 -OPT:REF,ICF -FORCE libtcmalloc_minimal.lib -INCLUDE:__tcmalloc"

如果我以这种方式构建程序,我需要将 libtcmalloc_minimal.dll 与程序一起分发。

我假设这是 GCC 还是我会使用的类似 -static 但该标志无法被 visual-c++ 识别。有没有办法强制这个库静态实现?

【问题讨论】:

    标签: c++ visual-c++ makefile linker ldflags


    【解决方案1】:

    这里的问题是.lib 可以是静态库或 DLL 的导入库。在第一种情况下,它以二进制链接的方式与.a 文件在 Linux 上的链接方式相同,解析地址,删除不需要的代码等。在第二种情况下,.lib 文件用作 DLL 的存根,不能没有它的功能。您需要为您的库获取正确的版本(如果存在),然后与之链接,您不能使导入库的行为类似于静态库。

    【讨论】:

    • 这太尴尬了!我多么愚蠢。应该知道这个,谢谢你的帮助!
    • @SRG3006 我不认为这很尴尬,如果你来自 Unix 世界,那里的行为确实有点不同,那很好> 我希望你实际上有一个所需库的静态版本可用。
    猜你喜欢
    • 1970-01-01
    • 2010-11-17
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 2012-09-30
    • 1970-01-01
    • 2013-01-22
    相关资源
    最近更新 更多