首页 > 解决方案 > C++:使用 Clion 和 MinGW 和 g++ 编译器构建项目时出现 Cplex/cp 优化器生成文件问题

问题描述

当我使用 cplex/cp 优化器外部库时,我的 C++ 项目无法构建。我在带有 g++ 编译器的 Windows 7 上使用 Cplex 12.9 版。我收到以下错误:

C:/PROGRA~1/IBM/ILOG/CPLEX_~1/concert/include/ilconcert/ilosys.h:262:10:致命错误:generic.h:没有这样的文件或目录

我检查了我的编译器/MinGw 是否是最新的。我也尝试将 Clion 中的工具链切换到 Visual Studio,但这会导致其他错误。我已经能够使用 Visual Studio 在 cplex\examples\x64_windows_vs2017\stat_mda 中运行示例代码,但不幸的是,这些示例项目没有可比较的示例生成文件。我的同事已经能够使用 Clion 中的 g++ 编译器在 Linux 上运行代码。

我正在使用的make文件如下:

cmake_minimum_required(VERSION 3.15)
project(M_MDD)

include_directories("C:/Program Files/IBM/ILOG/CPLEX_Studio129/cpoptimizer/include/")
include_directories("C:/Program Files/IBM/ILOG/CPLEX_Studio129/concert/include/")
include_directories("C:/Program Files/IBM/ILOG/CPLEX_Studio129/cplex/include/")
include_directories("C:/Program Files/boost_1_55_0")

set(CMAKE_CXX_FLAGS  "-Wall ${CMAKE_CXX_FLAGS} -DIL_STD -g -O0 -ggdb -std=c++11")

include_directories(src)

add_executable(M_MDD
        src/instances/flowshop_instances.cpp
        src/instances/flowshop_instances.hpp
        src/main.cpp
        src/mip.cpp
        src/mip.hpp
        src/util.hpp)

link_directories("C:/Program Files/IBM/ILOG/CPLEX_Studio129/cplex/lib/x64_windows_vs2017/stat_mdd/")
link_directories("C:/Program Files/IBM/ILOG/CPLEX_Studio129/concert/lib/x64_windows_vs2017/stat_mdd/")
link_directories("C:/Program Files/IBM/ILOG/CPLEX_Studio129/cpoptimizer/lib/x64_windows_vs2017/stat_mdd/")

target_link_libraries(M_MDD cplex)
target_link_libraries(M_MDD concert)
target_link_libraries(M_MDD cp)
target_link_libraries(M_MDD pthread)

谢谢!

标签: c++g++mingwclioncplex

解决方案


CPLEX详细的系统要求(单击“版本 12.9.0”、“Windows”、“先决条件”)显示 Visual Studio 2015-2019 是 Windows 上唯一受支持的编译器。尤其不能期望 C++ 库与 g++ 兼容(例如,由于名称修改等)。相反,如果您查看 Linux 上的系统要求,您会发现那里支持 g ++

如果我们考虑您遇到的错误,这是有道理的。在ilosys.h第 262 行,我们有:

#if !(defined(name2))
# if defined(ILO_MSVC) || defined(ILO_LINUX) || defined(ILO_APPLE) || defined(ILO_HP11)
#  undef name2
#  define name2(a,b)      _name2_aux(a,b)
#  define _name2_aux(a,b)      a##b
# else
#include "generic.h"
# endif
#endif

ILO_MSVC没有定义,所以我们打#include "generic.h"线。

正如您所提到的,Windows 上没有用于 C/C++ 示例的生成文件。但是,Visual Studio 项目文件确实包含在 Visual Studio 中设置项目所需的所有内容。有关在 Visual Studio 中设置 C++ 项目的更多信息,请参阅CPLEX Optimization Studio 的安装位置<COSDIR>/cplex/readmeWindows.html<COSDIR>


推荐阅读