昨日、友人がIntel の MKL Java サンプルをコンパイルするのを手伝っていました。すべてが問題ないように見えたにもかかわらず、「未解決の外部」に問題がありました (サンプル ファイル/メイクファイルによると)。
次に、Visual Studio のダンプビンを使用して、未解決の関数がライブラリに存在するかどうかを確認しました。未解決の外部の 1 つの例は、 と呼ばれる関数_cblas_sgemm
です。ライブラリ ( ) からシンボルをダンプすると、接頭辞が欠落しているライブラリdumpbin /symbols mkl_core.lib
の関数しか見つかりませんでした。その後、この関数は実際には cblas_sgemm としか呼ばれておらず、名前マングリング ルールの一部としてコンパイラが接頭辞を追加したことを発見しました。cblas_sgemm
_
_
TL;DR
だから、私の質問は次のとおりです。
dumpbin
ライブラリのエントリ ポイントの完全な名前を表示しますか? または、何らかの理由で、実際に名前を「解読」しますか?- ライブラリはインストール パッケージに付属しているため、どのコンパイラを使用してコンパイルしたかはわかりません。異なるコンパイラは異なる名前を生成しますか?
私はそれが正しかったとは本当に思いません。おそらくどこかで何か間違ったことをしているのでしょうが、これら2つの質問について確認したいと思います。
回答のない同様の質問はこちらです。