未解析的外部符号_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的主要内容,如果未能解决你的问题,请参考以下文章
LNK2019:未解析的外部符号 _main 在函数 ___tmainCRTStartup 中引用
如何修复 MSVC 2005 错误:未解析的外部符号 __environ