関数「int foo()」を含む静的ライブラリ B.lib を消費する動的ライブラリ A.dll があります。dumpbin (win32、vs2010) を使用して dll のシンボルを表示すると、foo が表示されません。それともマイクロソフト固有ですか?これを Linux でテストしましたが、Linux ではそうではありません。
最後までお読みいただき、誠にありがとうございました。
カピル。
はい、これは想定内です。インポートされたシンボルに関する限り、dumpbin を使用すると、アプリケーションによって少なくとも 1 つの関数がインポートされるとすぐに (通常は) 存在する、いわゆるインポート アドレス テーブルとインポート名テーブルを確認できます (この場合は A. dll)。アプリケーションは STATIC ライブラリ (あなたの場合は B.lib) から 1 つの関数をインポートするため、上記のインポート テーブルには、B.lib から使用される関数のエントリは存在しません。ライブラリがアプリケーションに静的にリンクされると、その本体 (コード) はアプリケーションの一部になります。アプリケーションの関数が dumpbin を使用して見えないのと同様に、静的ライブラリの関数は dumpbin から見えません!