Библиотека времени выполнения Windows C не связывает, как я ожидал? - PullRequest
4 голосов
/ 30 марта 2012

Будучи давним разработчиком POSIX / Linux / BSD C и теперь пытаясь сделать несколько вещей с Visual C ++ 2010, я вроде как возился с этим инструментом, потому что он не совсем работает так же, как GCC набор инструментов делает. Теоретически, по крайней мере, в соответствии с документами, это кажется очень похожим (и я уверен, что это так), но я не вижу того, что ожидаю увидеть.

В этом случае я пытаюсь создать библиотеку C для последующего использования в проекте .NET, и я хочу быть осторожным, чтобы избежать конфликтов во время выполнения в дальнейшем. Я думал создать статическую библиотеку, связанную с DLL-версией среды выполнения C (msvcr100d.dll в конфигурации отладки), поэтому я установил флаг /MDd. Однако, когда я использую dumpbin.exe для проверки итогового вывода .lib, он не показывает никаких зависимостей или импорта.

Два вопроса, действительно:

  1. Это плохая идея в первую очередь? Должен ли я создавать DLL или связываться со статическим CRT вместо этого?
  2. Почему dumpbin.exe не показывает зависимость от CRT, когда я использую /MDd?

Обновление : Выбор правильной библиотеки времени выполнения C / C ++ довольно полезен и информативен. Я попробовал предложенное им заклинание dumpbin, и в результате было показано, что библиотека действительно ссылается на msvcrtd, как и ожидалось, но это не отвечает на мой второй вопрос выше.

1 Ответ

1 голос
/ 30 марта 2012

Поскольку это не окончательный 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...