2014-12-13 22 views
0

更具体地说,我在MingW环境中使用visual-C++。我有一个被定义为LDFLAGS一个makefile文件:你能在命令行中使用visual-C++静态链接特定的库吗?

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

如果我建立我这样的程序,我需要与节目一起分发libtcmalloc_minimal.dll。

我假设如果这是GCC或喜欢我会使用-static但该标志不被visual-C++识别。有没有办法强制这个库被静态实现?

回答

1

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

+0

这很尴尬!我多么愚蠢。应该知道这一点,感谢您的帮助! – SRG3006 2014-12-13 12:32:22

+0

@ SRG3006我不认为这很令人尴尬,如果你是来自Unix世界,事情的行为有点不同,那很好。>我希望你实际上有一个静态版本的可用库。 – 2014-12-13 13:01:38