【问题标题】:GCC/G++ warnings when using CPLEX 12.8使用 CPLEX 12.8 时的 GCC/G++ 警告
【发布时间】:2018-09-04 11:28:21
【问题描述】:

我使用 CPLEX 12.8 和 c++ 编写弯曲分解算法。当我使用 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-declarations] 结构限制 { ^ /opt/ibm/ILOG/CPLEX_Studio128/cplex/include/ilcplex/iloparam.h:103:40: 注意:在这里声明 静态常量 IloCplex::LongParam SubMIPNodeLim = LongParam(CPX_PARAM_SUBM

我没有在我的代码中使用SubMIPNodeLim,所以我不明白为什么我会收到这个警告。虽然 g++ 会产生这种警告,但它也会编译代码,我可以看到结果。但是,当我使用 gcc 时,它不会显示任何结果并以一长串错误终止。你能告诉我这里有什么问题吗?

【问题讨论】:

  • 您所拥有的不是错误,而是警告。而且您可能正在使用一些功能,而这些功能又使用了已弃用的功能。
  • @MikeKinghan gccg++ 程序之间的唯一区别是添加到包含和库搜索路径的默认目录以及gcc 不与C++ 库链接。否则,两者都执行相同的“后端”程序。 clangclang++ 相同。
  • @Someprogrammerdude 我知道。当我读到它时,我认为这实际上是一个单独的问题,他/她指的是未定义的参考链接错误。
  • @MikeKinghan:问题中甚至没有提到未定义的引用。你不在基地。
  • @LightnessRacesinOrbit 确实不是。我认为 OP 没有很好地区分 g++ build 的问题和 gcc build 的问题,并且没有为后者提供诊断。然而,不想争论折腾。评论已删除。

标签: c++ gcc g++ clang++ cplex


【解决方案1】:

参数警告仅用于提供信息;有问题的参数在ilcplex/iloparam.h 头文件中定义(通过ilcplex/ilocplex.h 间接包含),因此即使您不直接使用它也会看到该警告。您可以在 12.8 发行说明 here 中阅读有关已弃用参数的更多信息。如果需要,您可以使用 -Wno-deprecated 编译器选项来消除警告(即,请参阅文档 here)。

可以使用 gcc 编译 C++ 代码,但您可能会遇到链接器错误(例如,请参阅 this stackoverflow 线程)。但是,使用g++ 应该会让您的生活更轻松。

【讨论】:

    猜你喜欢
    • 2010-09-18
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多