2009-04-30 3 views
3

У меня есть статическая библиотека (.lib-файл) на платформе Windows, я хочу знать зависимую версию библиотеки CRT при создании библиотеки. У меня нет исходного кода файла .lib, каких-либо идей?зависимостей статической библиотеки

заранее спасибо, Джордж

ответ

5

Статические библиотеки не имеют такого рода зависимостей. Когда библиотека построена, она никак не связана с временем выполнения, все, что она знает, это объявления функций в файлах заголовка реализации, которые не предоставляют никакой информации о версии.

Однако, предполагая, что библиотека находится в формате MS, вы должны видеть, какие флаги библиотеки были созданы, открыв ее в текстовом редакторе (сделайте резервную копию, прежде чем это сделать). Вы ищете строку, как это:

cl.exe cmd -nologo -MTd -W3 -Gm -GX -ZI -DWIN32 -D_DEBUG (more stuff) 

Флаг -MTd говорит вам, что библиотека была собрана с поддержкой многопоточных отладки. ,

+0

Я встретил следующую ошибку при статической привязке к foo.lib, сообщение об ошибке - предупреждение LNK4098: defaultlib 'LIBCMT' конфликтует с использованием других libs; use/NODEFAULTLIB: библиотека, любые идеи, что является основной причиной? – George2

+0

Да, одна из библиотек и/или приложений была построена с поддержкой многопоточной поддержки, а другая - нет. Вам нужно собрать все библиотеки и приложения с одной и той же моделью потоков. – 2009-04-30 10:39:12

+0

Я в замешательстве, вы только что упоминали, что static lib не имеет ничего общего с библиотекой времени выполнения (debug/release/single threaded/multi threaded), почему компоновщик считает, что статическая библиотека зависит от другой модели выполнения потоковой модели и сообщает об этой ошибке? Любые методы для просмотра какой библиотеки времени выполнения статическая библиотека встроена? – George2

Смежные вопросы