バックグラウンドで、私はこのサイズのLinuxベースのコードベース(巨大な.so)からx64ウィンドウ(.dllにコンパイル)への移植を経験しました。リンカーに問題がありました。最小限のテストケースとしてDLL内の未解決のシンボルエラー
私は次のファイルからのVisual Studioプロジェクトを作成した場合、:
#include <Windows.h>
#include <Dbghelp.h>
void do_stuff(char const * s)
{
char buffer[4096];
long int len = UnDecorateSymbolName(
s,
buffer,
sizeof(buffer),
UNDNAME_COMPLETE);
}
そして、私はDLLにプロジェクトの種類を設定し、それを構築し、私はエラー「LNK2001を取得:未解決の外部シンボル__imp_UnDecorateSymbolName "。つまり、ファイルは正しくコンパイルされますが、dllにリンクすることはできません。
私の目標はdbghelp.dllにリンクするDLLです(少なくとも私のシステムでは)dbghelp.libのようなファイルがないからです。それでは、なぜ私のDLLがアプリケーションにロードされるのではなく、今、そのシンボルを解決しようとしていますか?とにかく、その機能を見ることができないのはなぜですか?
明らかに、私はx64 DLLをビルドしており、C:\ Windows \ System32のdbghelp.dllはx64であることを確認しました。共有ライブラリ、Windowsの-話す中のDLLへのリンク
。これはVisual Studio、Platform SDKなどに含める必要があります。 – Luke