Windows C运行时库没有像我期望的那样链接?

前端之家收集整理的这篇文章主要介绍了Windows C运行时库没有像我期望的那样链接?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
作为一个长期的POSIX / Linux / BSD C开发人员,现在尝试用Visual C 2010做一些事情,我有点笨拙地使用工具,因为它与GCC工具集的工作方式不同.理论上,至少根据文档,它看起来非常相似(我确定它是),但我没有看到我期待看到的东西.

在这种情况下,我正在尝试构建一个C库供以后在.NET项目中使用,我想小心避免以后的运行时冲突.我的想法是构建一个静态库,链接到C版运行时的DLL版本(Debug配置中的msvcr100d.dll),所以我设置/ MDd标志.但是,当我使用dumpbin.exe检查生成的.lib输出时,它不显示依赖项或导入.

真的有两个问题:

>首先这是一个坏主意吗?我应该构建DLL还是链接静态CRT?
>为什么我使用/ MDd时dumpbin.exe没有显示对CRT的依赖?

更新:Choosing the Correct C/C++ Runtime Library非常有用且信息丰富.我尝试了他建议的dumpbin咒语,输出显示lib确实按预期链接到msvcrtd,但这并没有真正回答我上面的第二个问题.

解决方法

因为这不是最终的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

猜你在找的Windows相关文章