作为一名长期的POSIX / Linux / BSD C开发人员,现在尝试用Visual C ++ 2010做一些事情,我有点笨拙地使用工具,因为它与GCC的工作方式不太一样工具集呢。理论上,至少根据文档,它看起来非常相似(我确定它是),但我没有看到我期待看到的东西。
在这种情况下,我正在尝试构建一个C库供以后在.NET项目中使用,我希望以后要小心避免运行时冲突。我的想法是构建一个静态库,链接到C运行时的DLL版本(Debug配置中的msvcr100d.dll),所以我设置了/MDd
标志。但是,当我使用dumpbin.exe
检查生成的.lib输出时,它不显示依赖项或导入。
两个问题,真的:
dumpbin.exe
时,为什么/MDd
不显示对CRT的依赖? 更新:Choosing the Correct C/C++ Runtime Library非常有用并且信息丰富。我尝试了他建议的dumpbin
咒语,输出显示lib确实按预期链接到msvcrtd
,但这并没有真正回答我上面的第二个问题。
答案 0 :(得分:1)
因为这不是最终的EXE或DLL,所以没有导入部分。相反,有一些链接器指令可以说明这个lib是如何链接的。
dumpbin /directives thoraway.lib
Microsoft (R) COFF/PE Dumper Version 10.00.40219.01
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file throwaway.lib
File Type: LIBRARY
Linker Directives
-----------------
/FAILIFMISMATCH:"_MSC_VER=1600"
/FAILIFMISMATCH:"_ITERATOR_DEBUG_LEVEL=2"
/DEFAULTLIB:"msvcprtd"
/DEFAULTLIB:"MSVCRTD"
/DEFAULTLIB:"OLDNAMES"
/EDITANDCONTINUE
Summary
CFC .debug$S
4C .debug$T
A2 .drectve
B .rdata
4 .rtc$IMZ
4 .rtc$TMZ
49 .text