2015-12-23 133 views
1

「strcmpi」,而使用「ICL」編譯器編譯在Windows 10平臺我的C項目,我收到以下錯誤:解析的外部符號在Windows

OLDNAMES.lib(strcmpi.obj) : error LNK2001: unresolved external symbol strcmpi OLDNAMES.lib(strcmpi.obj) : error LNK2001: unresolved external symbol _strcmpi

請幫我解決這個問題。 LIB環境變量的值是:

echo %LIB% 

C:\Progra~2\Intel\\compiler\lib;C:\Progra~1\Micros~1\Lib\AMD64\atlmfc;C:\Progra~1\Micros~1\Lib\AMD64\;C:\Progra~1\Micros~1\Lib\;C:\Progra~2\Intel\\compiler\lib\intel64;

我不知道我在這裏漏掉哪個圖書館。

+1

這就是爲什麼你應該避免非標準功能的瑣碎事情。 – Lundin

+0

感謝您的回覆。由於OLDNAMES.lib是一個系統庫,我沒有與我的源代碼。文件'OLDNAMES.lib'出現在C:\ Progra〜1 \ Micros〜1 \ Lib \ AMD64 \下。那麼在這種情況下該怎麼辦? – user5710693

回答

2

使用stricmp反而是一種極爲常見的擴展<string.h>,但要注意,它也是一個標準的C函數。如果沒有,請嘗試_stricmp

您可以#DEFINEstrcmpistricmp這是針對多個平臺時很常見的做法。

我傾向於在我的源代碼中使用_stricmp,並且在多平臺標頭中使用#DEFINE相關函數。

+1

感謝您的回覆。由於OLDNAMES.lib是一個系統庫,我沒有與我的源代碼。文件'OLDNAMES.lib'出現在C:\ Progra〜1 \ Micros〜1 \ Lib \ AMD64 \下。那麼在這種情況下該怎麼辦? – user5710693

0

如果你知道strcmpi做什麼,你可以自己實現它並將結果鏈接到你的程序中。如果它的確如我所願,那麼只需要編寫

extern int 
strcmpi(const char *a, const char *b) 
{ 
    return _stricmp(a, b); 
} 

應該在Windows上完成。