未解析的外部符号_stricoll

Posted

技术标签:

【中文标题】未解析的外部符号_stricoll【英文标题】:unresolved external symbol _stricoll 【发布时间】:2015-02-10 09:03:01 【问题描述】:

我正在将 Python 库移动到依赖于一些 c 代码的 Windows 平台。 但是在windows下构建失败,得到:

util.obj : error LNK2019: unresolved external symbol _strtoll

错误的代码是:

x_space[j].index = (INT64)strtoll(idx,&endptr,10);

我的编译器是VS2010,在XP 32bit下使用。 我的make文件是:

CXX = cl.exe
CFLAGS = /nologo /O2 /EHsc /I. /D _WIN32 /D _CRT_SECURE_NO_DEPRECATE
TARGET = .

lib: util.c
$(CXX) $(CFLAGS) -LD util.c /Iliblinear -Fe$(TARGET)\util -link -DEF:util.def

我该如何解决这个问题?

【问题讨论】:

strtoll 函数是 C99 标准中的新功能,直到最近 Visual Studio 编译器和标准库对 C99 的支持还很少。实际上,MSDN page for strtoll 仅从 VS2013 报告其可用性。 【参考方案1】:

Microsoft 标准 C 库不包含将 C 字符串转换为 long long 的 strtoll() 的定义。

MS 提供了另一个函数,称为 _strtoi64(),它做同样的事情,并且具有完全相同的签名 - 只需使用它或在 MSVC 下为 strtoll 定义一个宏。

__int64 _strtoi64(
   const char *nptr,
   char **endptr,
   int base 
);

【讨论】:

我尝试过strtoi64,但也遇到了unresolved external symbol 错误。为什么? 你是否在函数的开头加了下划线(_strtoi64)?是在stdlib.h中定义的,你确定是链接器错误吗?

以上是关于未解析的外部符号_stricoll的主要内容,如果未能解决你的问题,请参考以下文章

错误 LNK2001:未解析的外部符号 LIBID_

LNK2019:未解析的外部符号 _main 在函数 ___tmainCRTStartup 中引用

无法解析的外部符号

如何修复 MSVC 2005 错误:未解析的外部符号 __environ

vc ++ MFC应用程序,错误LNK2019:未解析的外部符号

函数中引用的未解析的外部符号 _wcstok