ld.exe:DWARFエラー:オフセット101ceeで変数指定が見つかりませんでした
Aug 20 2020
次のメッセージで大量の出力が得られます(16進アドレスによってのみ区別されます)。
ld.exe: DWARF error: could not find variable specification at offset 101cee
一般的にこのエラーの意味は何ですか?
これは、リリースビルドをコンパイルするときには発生しません。ビルドのみをデバッグします。
回答
3 Chameleon Aug 20 2020 at 18:24
基本的に私はちょうど解決策を見つけました。StackOverflowでそのような質問が見つからなかったため、ここに配置します。私の立場が間違っている場合は答えてください。
ライブラリを静的ライブラリとしてコンパイルしますが、正しい#define
ディレクティブがないと、エクスポートされたすべての関数に__declspec(dllexport)
プレフィックスが付けられます。そのため、関数の名前はにfunction
なりました__imp_function
。
だから、それはただのundefined reference to __imp_function
でした。
しかし、なぜそれがそれほど暗号化されているのでしょうか?そして、なぜリリースビルドが正しくコンパイルされたのですか?
-flto
これは、リンク時間の最適化を行い、ライブラリのすべてのコードを.aファイル内に保持するオプションが原因で発生すると思います。したがって、参照は必要ありません(失敗はありません)。