0

関数「int foo()」を含む静的ライブラリ B.lib を消費する動的ライブラリ A.dll があります。dumpbin (win32、vs2010) を使用して dll のシンボルを表示すると、foo が表示されません。それともマイクロソフト固有ですか?これを Linux でテストしましたが、Linux ではそうではありません。

最後までお読みいただき、誠にありがとうございました。

カピル。

4

1 に答える 1

0

はい、これは想定内です。インポートされたシンボルに関する限り、dumpbin を使用すると、アプリケーションによって少なくとも 1 つの関数がインポートされるとすぐに (通常は) 存在する、いわゆるインポート アドレス テーブルとインポート名テーブルを確認できます (この場合は A. dll)。アプリケーションは STATIC ライブラリ (あなたの場合は B.lib) から 1 つの関数をインポートするため、上記のインポート テーブルには、B.lib から使用される関数のエントリは存在しませんライブラリがアプリケーションに静的にリンクされると、その本体 (コード) はアプリケーションの一部になります。アプリケーションの関数が dumpbin を使用して見えないのと同様に、静的ライブラリの関数は dumpbin から見えません!

于 2012-03-12T00:55:36.027 に答える