vs c++工程添加cplex库后,编译出现很多错误的时候,不一定是代码有问题,可能是:
【宏定义冲突】
EXAMPLE_1 往项目中添加#include<ilcplex/ilocplex.h>直接报如下错
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloiterator.h(41): error C2332: “class”: 缺少标记名
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloiterator.h(41): error C2993: “”: 非类型模板参数“<unnamed-tag>”的类型非法
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloiterator.h(41): error C2059: 语法错误:“常量”
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloiterator.h(43): error C2059: 语法错误:“public”
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloiterator.h(43): error C2143: 语法错误: 缺少“;”(在“{”的前面)
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloiterator.h(43): error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2246: “IloNumExprI::_rttiIndex”: 本地定义的类中的非法静态数据成员
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “getTypeInfo”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “getBaseTypeInfo”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “isType”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “getTypeIndex”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “getBaseTypeIndex”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “getRttiTypeName”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “extractToCP”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “unextractFromCP”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2270: “modifyCP”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2246: “IloNumExprI::_extractCP”: 本地定义的类中的非法静态数据成员
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2246: “IloNumExprI::_unextractCP”: 本地定义的类中的非法静态数据成员
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(72): error C2246: “IloNumExprI::_modifyCP”: 本地定义的类中的非法静态数据成员
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(91): error C2270: “getExprUsed”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(101): error C2270: “isInteger”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(103): error C2270: “eval”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(105): error C2270: “getNumConstant”: 非成员函数上不允许修饰符
1>C:\Program Files\IBM\ILOG\CPLEX_Studio127\concert\include\ilconcert/iloexpression.h(107): error C2270: “isRefCountedExpr”: 非成员函数上不允许修饰符
一个个文件检查后发现是一个宏定义导致的:#define E 0.01
应该是iloexpression.h中涉及了E
在VS C++工程中引入CPLEX库后遇到编译错误,错误源于宏定义冲突。例如,`#define E 0.01`与CPLEX头文件中的某个标识符'E'产生冲突,导致`iloiterator.h`和`iloexpression.h`等文件中的编译错误。解决方法是避免或修改引起冲突的宏定义。
6023

被折叠的 条评论
为什么被折叠?



