C++的编译问题

2024-11-26 05:28:12
推荐回答(2个)
回答1:

------ 已启动生成: 项目: hehe, 配置: Debug Win32 ------
正在编译...
main.cpp
d:\program files\microsoft visual studio 8\vc\include\xutility(572) : error C2039: “iterator_category”: 不是“PointX”的成员
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(4) : 参见“PointX”的声明
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(69): 参见对正在编译的类 模板 实例化“std::iterator_traits<_Iter>”的引用
with
[
_Iter=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(572) : error C2146: 语法错误 : 缺少“;”(在标识符“iterator_category”的前面)
d:\program files\microsoft visual studio 8\vc\include\xutility(572) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
d:\program files\microsoft visual studio 8\vc\include\xutility(572) : error C2602: “std::iterator_traits<_Iter>::iterator_category”不是“std::iterator_traits<_Iter>”基类的成员
with
[
_Iter=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(572) : 参见“std::iterator_traits<_Iter>::iterator_category”的声明
with
[
_Iter=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(572) : error C2868: “std::iterator_traits<_Iter>::iterator_category”: 非法的 using 声明语法;应输入限定名
with
[
_Iter=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(573) : error C2039: “value_type”: 不是“PointX”的成员
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(4) : 参见“PointX”的声明
d:\program files\microsoft visual studio 8\vc\include\xutility(573) : error C2146: 语法错误 : 缺少“;”(在标识符“value_type”的前面)
d:\program files\microsoft visual studio 8\vc\include\xutility(573) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
d:\program files\microsoft visual studio 8\vc\include\xutility(573) : error C2602: “std::iterator_traits<_Iter>::value_type”不是“std::iterator_traits<_Iter>”基类的成员
with
[
_Iter=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(573) : 参见“std::iterator_traits<_Iter>::value_type”的声明
with
[
_Iter=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(573) : error C2868: “std::iterator_traits<_Iter>::value_type”: 非法的 using 声明语法;应输入限定名
with
[
_Iter=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(574) : error C2039: “difference_type”: 不是“PointX”的成员
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(4) : 参见“PointX”的声明
d:\program files\microsoft visual studio 8\vc\include\xutility(574) : error C2146: 语法错误 : 缺少“;”(在标识符“difference_type”的前面)
d:\program files\microsoft visual studio 8\vc\include\xutility(574) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
d:\program files\microsoft visual studio 8\vc\include\xutility(574) : error C2602: “std::iterator_traits<_Iter>::difference_type”不是“std::iterator_traits<_Iter>”基类的成员
with
[
_Iter=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(574) : 参见“std::iterator_traits<_Iter>::difference_type”的声明
with
[
_Iter=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(574) : error C2868: “std::iterator_traits<_Iter>::difference_type”: 非法的 using 声明语法;应输入限定名
with
[
_Iter=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(576) : error C2039: “pointer”: 不是“PointX”的成员
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(4) : 参见“PointX”的声明
d:\program files\microsoft visual studio 8\vc\include\xutility(576) : error C2146: 语法错误 : 缺少“;”(在标识符“pointer”的前面)
d:\program files\microsoft visual studio 8\vc\include\xutility(576) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
d:\program files\microsoft visual studio 8\vc\include\xutility(576) : error C2602: “std::iterator_traits<_Iter>::pointer”不是“std::iterator_traits<_Iter>”基类的成员
with
[
_Iter=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(576) : 参见“std::iterator_traits<_Iter>::pointer”的声明
with
[
_Iter=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(576) : error C2868: “std::iterator_traits<_Iter>::pointer”: 非法的 using 声明语法;应输入限定名
with
[
_Iter=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(577) : error C2039: “reference”: 不是“PointX”的成员
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(4) : 参见“PointX”的声明
d:\program files\microsoft visual studio 8\vc\include\xutility(577) : error C2146: 语法错误 : 缺少“;”(在标识符“reference”的前面)
d:\program files\microsoft visual studio 8\vc\include\xutility(577) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
d:\program files\microsoft visual studio 8\vc\include\xutility(577) : error C2602: “std::iterator_traits<_Iter>::reference”不是“std::iterator_traits<_Iter>”基类的成员
with
[
_Iter=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(577) : 参见“std::iterator_traits<_Iter>::reference”的声明
with
[
_Iter=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(577) : error C2868: “std::iterator_traits<_Iter>::reference”: 非法的 using 声明语法;应输入限定名
with
[
_Iter=PointX
]
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(69) : error C2668: “distance”: 对重载函数的调用不明确
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(19): 可能是“float distance(const Type &,const Type &)”
with
[
Type=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(1652): 或“int std::distance(_InIt,_InIt)”
with
[
_InIt=PointX
]
试图匹配参数列表“(PointX, PointX)”时
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(73) : error C2668: “distance”: 对重载函数的调用不明确
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(19): 可能是“float distance(const Type &,const Type &)”
with
[
Type=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(1652): 或“int std::distance(_InIt,_InIt)”
with
[
_InIt=PointX
]
试图匹配参数列表“(PointX, PointX)”时
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(74) : error C2668: “distance”: 对重载函数的调用不明确
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(19): 可能是“float distance(const Type &,const Type &)”
with
[
Type=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(1652): 或“int std::distance(_InIt,_InIt)”
with
[
_InIt=PointX
]
试图匹配参数列表“(PointX, PointX)”时
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(75) : error C2668: “distance”: 对重载函数的调用不明确
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(19): 可能是“float distance(const Type &,const Type &)”
with
[
Type=PointX
]
d:\program files\microsoft visual studio 8\vc\include\xutility(1652): 或“int std::distance(_InIt,_InIt)”
with
[
_InIt=PointX
]
试图匹配参数列表“(PointX, PointX)”时
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(109) : error C2065: “i”: 未声明的标识符
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(110) : error C2228: “.x”的左边必须有类/结构/联合
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(113) : error C2228: “.y”的左边必须有类/结构/联合
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(119) : error C2228: “.p”的左边必须有类/结构/联合
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(148) : warning C4244: “=”: 从“int”转换到“float”,可能丢失数据
e:\documents\visual studio 2005\projects\hehe\hehe\main.cpp(149) : warning C4244: “=”: 从“int”转换到“float”,可能丢失数据
生成日志保存在“file://e:\Documents\Visual Studio 2005\Projects\hehe\hehe\Debug\BuildLog.htm”
hehe - 33 个错误,2 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========

回答2:

这个问题是你的编译命令写错了,你给出了头文件的地址和库文件的地址,但是你链接的时候没有给出lib所在的地址,你的编译命令应该写成如下形式:

$(CC) $(FLAGS) test2.c -I$(JSON_H) -L$(JSON_LIB) -l****
其中***表示的是你要链接的库的名字,比如你要链接的库是libjson.so(这是linux的形式,windows下是.lib)
那么***就写成json,其中***前面的是-l(L小写,不是i的大写)
这样你就能链接成功了。