gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 14:26:34 24 4
gpt4 key购买 nike

作为一名长期的 POSIX/Linux/BSD C 开发人员,现在尝试使用 Visual C++ 2010 做一些事情,我对工具有点摸不着头脑,因为它与 GCC 的工作方式不太一样工具集可以。从理论上讲,至少根据文档,它看起来非常相似(而且我确信是这样),但我没有看到我期望看到的东西。

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

两个问题,真的:

  1. 这首先是个坏主意吗?我应该构建 DLL 还是链接到静态 CRT?
  2. 为什么当我使用 /MDddumpbin.exe 不显示对 CRT 的依赖?

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

最佳答案

因为这不是最终的 EXE 或 DLL,所以没有导入部分。取而代之的是,有一些链接器指令说明了该库的链接方式。

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

关于c - Windows C 运行时库没有像我预期的那样链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9947589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com