c++ - 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)
谢谢!
解决方案
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>
推荐阅读
- java - org.hibernate.exception.SQLGrammarException:无法在不同的 weblogic 服务器上执行语句
- envoyproxy - envoyproxy:对自定义请求/响应标头变量使用逻辑运算符 OR
- docker - 如何将镜像推送到 Docker Hub
- matlab - 我需要从具有单一结果的最小差异的矩阵中选择一个子矩阵
- javascript - 开玩笑测试 Axios 取消请求 React 的问题
- c# - 如何在 Visual Studio 的同一个窗体上设置两个不同的图标?
- angular - 如何在 void 函数中测试对函数范围变量的分配?
- reactjs - 在大型网站的单个页面上使用 React JS
- javascript - 修改画布而不冻结浏览器(异步绘图)
- swift - GoogleWebRTC 在 swift 本机应用程序 (OpenVidu) 中挂起(冻结)主线程