0

静的ライブラリと、この静的ライブラリに静的にリンクするDLLの 2 つのプロジェクトがあります。仮定しましょう:

foo.lib (static library)
bar.dll (links against foo.lib)

foo.lib には次の機能があります。

fooFile(...);

私は静的に lib を正常にビルドし、dumpbin /symbols は関数がそこにあることを教えてくれます (ただし、いくつかの名前マングリングがあります)。bar.dll プロジェクトに対してリンクしようとすると、次のエラーが発生します。

error LNK2019: unresolved external symbol _fooFile referenced in function _fooSomething

なぜこれが失敗するのですか?Linux 環境では、同じコードが問題なく動作します。

4

1 に答える 1

2

bar.dll プロジェクトは C としてコンパイルされているか、extern "C" {...}. 基本的に、一方のプロジェクトは関数を C++ リンケージを持つものとしてエクスポートし、もう一方のプロジェクトは C リンケージで関数をインポートしようとします。

于 2013-07-26T01:23:02.070 に答える