我使用CPLEX 12.8和c ++编写了一个benders分解算法。当我使用clang ++编译器时,没有错误。但是,当我使用g ++时,会发生以下错误:
在包含的文件中
/opt/ibm/ILOG/CPLEX_Studio128/cplex/include/ilcplex/ilocplexi.h:1053:0,
来自/opt/ibm/ILOG/CPLEX_Studio128/cplex/include/ilcplex/ilocplex.h:29,
来自PARAM.h:12,
来自MAIN.cpp:1:/opt/ibm/ILOG/CPLEX_Studio128/cplex/include/ilcplex/iloparam.h:83:12:
警告:“ IloCplex :: Param :: MIP :: Limits :: SubMIPNodeLim”已弃用
[-Wdeprecated-clarations]
结构限制{^ /opt/ibm/ILOG/CPLEX_Studio128/cplex/include/ilcplex/iloparam.h:103:40:
注意:在这里声明
静态const IloCplex :: LongParam SubMIPNodeLim = LongParam(CPX_PARAM_SUBM
我没有在代码中使用SubMIPNodeLim
,所以我不明白为什么收到此警告。尽管g ++会产生这种警告,但它也会编译代码,我可以看到结果。但是,当我使用gcc时,它不会显示任何结果,并且会以一长串错误终止。你能告诉我这是怎么回事吗?
最佳答案
参数warning仅用于提供信息;有问题的参数在ilcplex/iloparam.h
头文件中定义(通过ilcplex/ilocplex.h
间接包含在其中),因此即使您没有直接使用它,您也会看到该警告。您可以在12.8发行说明here中阅读有关不推荐使用的参数的更多信息。如果需要,可以使用-Wno-deprecated
编译器选项使警告静音(即,请参见文档here)。
您可以使用gcc编译C ++代码,但可能会出现链接器错误(例如,请参见this stackoverflow线程)。但是,使用g++
应该会使您的生活更轻松。
关于c++ - 使用CPLEX 12.8时的GCC/G++警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49489430/