статически связанная функция не видна в выводе dll - PullRequest
0 голосов
/ 08 марта 2012

У меня есть динамическая библиотека A.dll, которая использует статическую библиотеку B.lib, содержащую функцию "int foo ()". Когда я использую dumpbin (на win32, vs2010) для просмотра символов в dll - foo не виден - это ожидается? или это специфично для Microsoft? Я проверял это на Linux, а на Linux это не так.

Большое спасибо за ваше терпение, чтобы прочитать это до конца.

Капил.

1 Ответ

0 голосов
/ 12 марта 2012

Да, это ожидается. Что касается импортированных символов, то, используя dumpbin, вы можете увидеть так называемую таблицу адресов импорта и таблицу имен импорта, которые обе (как правило) существуют, как только приложение импортирует хотя бы одну функцию (в вашем случае A. DLL). Поскольку ваше приложение импортирует одну функцию из библиотеки STATIC (в вашем случае B.lib), запись NO существует в таблицах импорта, упомянутых выше для функций, используемых из B.lib. Как только библиотека СТАТИЧЕСКИ связана с приложением, ее тело (код) становится частью приложения. Так же как функции вашего приложения не видны при использовании dumpbin, функции статической библиотеки не видны в dumpbin!

...