You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows10下CLion配置Gurobi952 C++项目遇链接错误求助

Windows10下CLion配置Gurobi952 C++项目的链接错误解决方法

问题描述

在Windows10的CLion中配置Gurobi952的C项目,许可证已在Java/Python环境正常使用,但C项目编译失败:

初始CMakeLists.txt内容

cmake_minimum_required(VERSION 3.13)
project(CHEO)
set(CMAKE_CXX_STANDARD 20)
include_directories(C:/gurobi952/win64/include)
add_executable(CHEO main.cpp)

主文件main.cpp内容

#include "iostream"
#include "gurobi_c++.h"
using namespace std;

int
main(int   argc,
     char *argv[])
{
    try {
        cout << "Hello" << endl;
        // Create an environment
        GRBEnv env = GRBEnv(true);
    } catch(...) {
        cout << "Exception during optimization" << endl;
    }

    return 0;
}

编译链接错误

[1/2] Building CXX object CMakeFiles/CHEO.dir/main.cpp.obj
[2/2] Linking CXX executable CHEO.exe
FAILED: CHEO.exe 
cmd.exe /C "cd . && C:\PROGRA~1\JETBRA~1\CLION2~1.4\bin\mingw\bin\G__~1.EXE -g  CMakeFiles/CHEO.dir/main.cpp.obj -o CHEO.exe -Wl,--out-implib,libCHEO.dll.a -Wl,--major-image-version,0,--minor-image-version,0  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
C:\Program Files\JetBrains\CLion 2022.2.4\bin\mingw\bin/ld.exe: CMakeFiles/CHEO.dir/main.cpp.obj:C:/Users/USERNAME/CLionProjects/CHEO/main.cpp:12: undefined reference to `GRBEnv::GRBEnv(bool)'
C:\Program Files\JetBrains\CLion 2022.2.4\bin\mingw\bin/ld.exe: CMakeFiles/CHEO.dir/main.cpp.obj: in function `main':
C:/Users/USERNAME/CLionProjects/CHEO/main.cpp:48: undefined reference to `GRBEnv::~GRBEnv()'
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

尝试官方CMake方案后的错误

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
GUROBI_CXX_LIBRARY
    linked by target "gurobi-template" in directory C:/Users/USERNAME/CLionProjects/CHEO
    linked by target "gurobi-template" in directory C:/Users/USERNAME/CLionProjects/CHEO

解决方案

方法一:直接修改CMakeLists.txt(新手首选)

初始配置仅添加了头文件路径,但未链接Gurobi的库文件,这是链接错误的核心原因。按以下步骤修改:

  1. 确认Gurobi库文件路径:C:/gurobi952/win64/lib,其中包含对应编译器的库文件(MSVC对应gurobi_c++mdd2020.lib,MinGW对应libgurobi_c++.a)。
  2. 修改后的CMakeLists.txt:
cmake_minimum_required(VERSION 3.13)
project(CHEO)
set(CMAKE_CXX_STANDARD 20)

# 设置Gurobi的头文件和库路径
set(GUROBI_INCLUDE_DIR "C:/gurobi952/win64/include")
set(GUROBI_LIB_DIR "C:/gurobi952/win64/lib")

# 引入头文件
include_directories(${GUROBI_INCLUDE_DIR})
# 添加库搜索路径
link_directories(${GUROBI_LIB_DIR})

add_executable(CHEO main.cpp)

# 根据编译器类型链接对应库
if(MSVC)
    # 适配MSVC编译器(CLion默认工具链多为MSVC)
    target_link_libraries(CHEO gurobi95 gurobi_c++mdd2020)
else()
    # 适配MinGW编译器
    target_link_libraries(CHEO gurobi95 gurobi_c++)
endif()

说明:

  • 可通过CLion的Settings→Build, Execution, Deployment→Toolchains查看当前使用的编译器类型。
  • gurobi95是Gurobi核心库,gurobi_c++xxx是C接口库,后缀随C标准和编译器变化。

方法二:修复官方FindGUROBI.cmake配置

官方脚本可能无法自动识别库路径,手动指定Gurobi安装根目录即可:

  1. 将官方FindGUROBI.cmake放入项目新建的cmake文件夹中。
  2. 修改CMakeLists.txt:
cmake_minimum_required(VERSION 3.13)
project(CHEO)
set(CMAKE_CXX_STANDARD 20)

# 添加自定义cmake脚本路径
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake")
# 手动指定Gurobi安装根目录
set(GUROBI_ROOT "C:/gurobi952/win64")
# 查找Gurobi库
find_package(GUROBI REQUIRED)

add_executable(CHEO main.cpp)
# 链接Gurobi库
target_link_libraries(CHEO ${GUROBI_CXX_LIBRARY} ${GUROBI_LIBRARY})

额外注意事项

  • 确保编译器架构与Gurobi一致:Gurobi为win64版本,需使用64位编译器(CLion工具链选择x86_64版本)。
  • 运行程序前,需将C:/gurobi952/win64/bin/gurobi95.dll复制到可执行文件同目录,或把该路径添加到系统环境变量PATH中,否则会提示找不到动态库。

内容的提问来源于stack exchange,提问作者mdslt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 05:45:32