對於背景,我已經遇到過將一箇中等大小的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。
我認爲我的目標是讓我的dll鏈接到dbghelp.dll,尤其是因爲(至少在我的系統上)沒有dbghelp.lib這樣的文件。那麼爲什麼它現在試圖解決這個符號,而不是當我的DLL被加載到應用程序?無論如何,它爲什麼不能看到這個功能呢?
要清楚,我已確認我正在構建x64 DLL,並且C:\ Windows \ System32中的dbghelp.dll是x64。
它仍然需要與導入庫dbghelp.lib鏈接;這應該包含在Visual Studio,Platform SDK等中。 – Luke 2012-03-01 20:25:05