Microsoft 內部支援資訊
錯誤 #: 101959 (Visual Studio)
摘要
當您藉由使用 64 位元版本的 Microsoft Visual C++ 的編譯器和連結器建置 DLL 時,您可能會收到連結器錯誤代碼 LNK4197,如果已宣告的函式,使其能匯出一個以上的時間。
徵狀
連結器輸出可能類似下列:
C:\>link /NOLOGO /def:Sample.def /pdb:Sample.pdb /out:Sample.dll Sample.objSample.obj : warning LNK4197: export 'DllSample' specified multiple times; using first specification Creating library Sample.lib and object Sample.exp
原因
已宣告的函式,使其能匯出一次以上,就會產生連結器錯誤號碼 LNK4197。下列方法之一來進行匯出宣告的函式:
-
您的 C 原始程式檔中使用__declspec(dllexport)關鍵字宣告的函式:
__declspec(dllexport) int DllSample() { return 42;}
-
函式宣告使用模組定義 (。DEF) 檔中:
EXPORTS DllSample
連結器可能發生此錯誤最常時__declspec(dllexport)關鍵字和 a。DEF 檔用來定義中相同的函式名稱。DLL 專案。
解決方案
若要解決這個問題,請定義匯出函式只一次,使用__declspec(dllexport)關鍵字,或使用。DEF 檔。請勿使用這兩種方法。
狀態
產生此錯誤是系統刻意為之。
其他相關資訊
宣告匯出一次以上的函式可能不會產生的 32 位元版本的 Microsoft Windows c + + 編譯器和連結器在本文 < 徵狀=""> 一節所述的連結器錯誤。不過,Microsoft 建議您在 32 位元和 64 位元版本 Windows 的 c + + 編譯器和連結器中定義函式匯出一次。