无法解析的外部符号 _strtoll


最近在折腾一个Python库到windows的迁移,底层用了一些C依赖,各种不懂。
错误栈显示如下:


 util.obj : error LNK2019: 无法解析的外部符号 _strtoll,该符号在函数 _read_problem 中被引用
.\util.dll : fatal error LNK1120: 1 个无法解析的外部命令
NMAKE : fatal error U1077: “"C:\Program Files\Microsoft Visual Studio 10.0\VC\BIN\cl.exe"”: 返回代码“0x2”

报错的代码在这里:


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

用的编译器是 VS2010 ,Makefile是这么写的:


 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

此前用过一次 mingw ,是能通过的。
求问怎么解决 VS2010 下的编译问题?

c windows

江汉热线线长 9 years, 9 months ago

八成是你的环境变量设置问题,VS 没找到标准库。

确保你是使用 Visual Studio Command Prompt 打开的命令行窗口,或者在执行命令前执行一下 vcvarsall.bat ,执行方法详见 MSDN 文档

超薄浮点草莓味 answered 9 years, 9 months ago

搬砖一下 stackoverflow 得到的答案:
微软的标准C库并不包含 strtoll() 这样的将C的字符串转化为 long long 型的函数,但微软提供了另一个替代品: _strtoi64()

详细链接

liege answered 9 years, 9 months ago

Your Answer