我正在嘗試爲'Version.dll'生成一個代理DLL,但仍然遇到與導出的函數相關的錯誤。代理DLL中的未解析的外部符號
00000000 characteristics
4A5BC9E3 time date stamp Tue Jul 14 05:27:23 2009
0.00 version
1 ordinal base
15 number of functions
15 number of names
ordinal hint RVA name
1 0 00001B14 GetFileVersionInfoA
2 1 00001E40 GetFileVersionInfoByHandle
3 2 0000193C GetFileVersionInfoExW
4 3 00001AB4 GetFileVersionInfoSizeA
5 4 000014E8 GetFileVersionInfoSizeExW
6 5 000015FC GetFileVersionInfoSizeW
7 6 00001614 GetFileVersionInfoW
8 7 00002820 VerFindFileA
9 8 00003F50 VerFindFileW
10 9 00002AF0 VerInstallFileA
11 A 000043F8 VerInstallFileW
12 B VerLanguageNameA (forwarded to KERNEL32.VerLanguageNameA)
13 C VerLanguageNameW (forwarded to KERNEL32.VerLanguageNameW)
14 D 00001B94 VerQueryValueA
15 E 000015E0 VerQueryValueW
我的代碼如下所示:
extern "C"
{
BOOL WINAPI DllMain(HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
DisableThreadLibraryCalls((HMODULE)hDllHandle);
// do stuff
}
return TRUE;
}
DWORD APIENTRY Wrapper_GetFileVersionInfoSizeExA(__in DWORD dwFlags, __in LPCSTR lpwstrFilename, __out LPDWORD lpdwHandle)
{
return ::GetFileVersionInfoSizeExA(dwFlags, lpwstrFilename, lpdwHandle);
}
// and so on for the rest
}
出口定義文件:
LIBRARY Version
EXPORTS
GetFileVersionInfoA=Wrapper_GetFileVersionInfoA
GetFileVersionInfoByHandle=Wrapper_GetFileVersionInfoByHandle
GetFileVersionInfoExW=Wrapper_GetFileVersionInfoExW
GetFileVersionInfoSizeA=Wrapper_GetFileVersionInfoSizeA
GetFileVersionInfoSizeExW=Wrapper_GetFileVersionInfoSizeExW
GetFileVersionInfoSizeW=Wrapper_GetFileVersionInfoSizeW
GetFileVersionInfoW=Wrapper_GetFileVersionInfoW
VerFindFileA=Wrapper_VerFindFileA
VerFindFileW=Wrapper_VerFindFileW
VerInstallFileA=Wrapper_VerInstallFileA
VerInstallFileW=Wrapper_VerInstallFileW
VerLanguageNameA=Wrapper_VerLanguageNameA
VerLanguageNameW=Wrapper_VerLanguageNameW
VerQueryValueA=Wrapper_VerQueryValueA
VerQueryValueW=Wrapper_VerQueryValueW
我使用的是不同的函數名,以防止對包括WINDOWS.H原型重新定義錯誤頭文件。試圖建立上述生成以下錯誤:
1>Main.obj : error LNK2001: unresolved external symbol [email protected]
1>Main.obj : error LNK2001: unresolved external symbol [email protected]
1>Main.obj : error LNK2001: unresolved external symbol [email protected]
1>Main.obj : error LNK2001: unresolved external symbol [email protected]
1>Main.obj : error LNK2001: unresolved external symbol [email protected]
1>Main.obj : error LNK2001: unresolved external symbol [email protected]
1>Main.obj : error LNK2001: unresolved external symbol [email protected]
1>Main.obj : error LNK2001: unresolved external symbol [email protected]
1>Main.obj : error LNK2001: unresolved external symbol [email protected]
1>Main.obj : error LNK2001: unresolved external symbol [email protected]
1>Main.obj : error LNK2001: unresolved external symbol _VerFin[email protected]
1>Main.obj : error LNK2001: unresolved external symbol [email protected]
1>Main.obj : error LNK2001: unresolved external symbol [email protected]
這是無可否認的我第一次嘗試建立一個代理DLL,所以我可能會丟失一些東西明顯。謝謝。
啊,我的道歉 - 我是說我已經加入導入庫,而是認爲錯誤曾與做的印象導出定義文件。沒想到檢查兩次。 – shadeMe