0

リンクしようとしているライブラリ関数がありますが、関数名に "( imp _)" プレフィックスを追加することにより、コンパイラがリンカー エラーをスローします。

コンパイラが関数名の先頭に「imp _ 」を付ける理由がわかりません。また、根本的なリンカの問題もわかりません。

4

1 に答える 1

0

静的リンクと動的リンクの問題のようです。

コンパイラは、実際の関数が動的ライブラリに配置されると判断した場合、関数をimpl _+funcnameとして参照します。つまり、実際の foobar の実装は dll 内にあり、impl _foobar はリンカを満足させる一種のスタブです (foobar のアドレスはリンク段階では不明であり、実行時にアプリケーションが dll をロードしたときにのみわかります)。

そのため、そのライブラリにどの程度正確にリンクする必要があるかを確認し (通常、ライブラリには静的バリアントと動的バリアントの両方があります)、それに従ってリンクします。

于 2013-02-18T11:54:10.970 に答える