我使用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/

10-11 22:06
查看更多