Статическая библиотека с зависимостями

e.exe связан с моей пользовательской статической библиотекой, c. lib , который использует Win32 API, определенный в w.dll . w.dll находится в C: \ Windows \ System32, а его библиотека импорта - w.lib , расположенная в каталоге Windows SDK. Оболочка w.lib должна быть указана как Дополнительная зависимость в проекте c.lib или e.exe ? ( e.exe успешно компилируется в обоих случаях. ) Какая лучшая практика и почему? Полагаю, e.exe не должен знать о w.lib .

c.lib предназначен для совместного использования только группой разработчиков (не для отправки клиентам).

ТЕСТ : Я использовал VS2008 и утилиту dumpbin для тестирования обоих случаев, и вот результаты:

  • Случай 1: w.lib добавлен как Дополнительная зависимость в проект c.lib .

dumpbin / archivemembers c.lib выводит список обоих смещений в w.dll и .obj файлов из проекта c.lib в качестве членов архива.

  • Случай 2: w.lib не добавлена ​​как Дополнительная зависимость в c.lib , но в проекте e.exe :

На этот раз вывод dumpbin содержит только файлы .obj из c. lib , а размер c.lib меньше, чем в случае 1

( c.lib был добавлен как Дополнительная зависимость в ] w.exe в обоих случаях.)

ПРИМЕЧАНИЕ : Я использовал w.lib и w.dll здесь как вымышленные общие имена для Windows библиотеки, но это могут быть, например, Userenv.lib и Userenv.dll или Version.lib и Version.dll ...

7
задан Bojan Komazec 10 January 2011 в 13:42
поделиться