VS Code配置MinGW64编译GLPK(GNU Linear Programming Kit)开源库

发布于:2025-08-17 ⋅ 阅读:(16) ⋅ 点赞:(0)

VS Code用MinGW64编译C++代码安装MSYS2软件并配置GLPK(GNU Linear Programming Kit)开源库和测试引用库代码的完整具体步骤。


1. 安装 MSYS2
  1. 访问 MSYS2 官网
  2. 下载安装包(64位)
  3. 按默认路径安装(如 C:\msys64
  4. 安装完成后,启动 MSYS2 UCRT64 终端(开始菜单中)

2. 更新系统并安装编译工具链
# 更新包数据库和核心包
pacman -Syu

# 关闭窗口后重新打开终端,执行完整更新
pacman -Su

# 安装编译工具链
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain

3. 安装 GLPK 库
# 安装 GLPK 开发包
pacman -S mingw-w64-ucrt-x86_64-glpk

4. 配置环境变量
  1. 打开系统设置 → 搜索“环境变量”
  2. 用户变量 中添加:
    • 变量名:Path
    • 变量值:C:\msys64\ucrt64\bin(确保在系统 Path 前)
  3. 验证安装(打开新终端):
    gcc --version
    glpsol --version
    

5. 配置 VS Code
  1. 安装扩展
    • C/C++ (Microsoft)
    • Code Runner (可选)
  2. 创建测试项目
    • 新建文件夹(如 glpk_test
    • 创建 test.cpp 文件

6. 测试代码 (test.cpp)
#include <iostream>
#include <glpk.h>

int main() {
    // 打印GLPK版本
    std::cout << "GLPK version: " << glp_version() << std::endl;

    // 创建问题实例
    glp_prob *lp = glp_create_prob();
    glp_set_prob_name(lp, "sample");
    
    // 添加行(约束)
    glp_add_rows(lp, 1);
    glp_set_row_name(lp, 1, "constraint1");
    glp_set_row_bnds(lp, 1, GLP_UP, 0.0, 100.0); // 上界约束
    
    // 添加列(变量)
    glp_add_cols(lp, 1);
    glp_set_col_name(lp, 1, "x");
    glp_set_col_bnds(lp, 1, GLP_LO, 0.0, 0.0); // 下界>=0
    glp_set_obj_coef(lp, 1, 10.0); // 目标函数系数
    
    // 加载系数矩阵
    int ia[] = {0, 1}; // 行索引(1-based)
    int ja[] = {0, 1}; // 列索引
    double ar[] = {0.0, 1.0}; // 系数值
    glp_load_matrix(lp, 1, ia, ja, ar);
    
    // 求解问题
    glp_simplex(lp, NULL);
    
    // 输出结果
    double z = glp_get_obj_val(lp);
    double x = glp_get_col_prim(lp, 1);
    std::cout << "Objective value: " << z << std::endl;
    std::cout << "x = " << x << std::endl;
    
    // 清理
    glp_delete_prob(lp);
    return 0;
}

7. 配置编译任务 (.vscode/tasks.json)
{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "Build GLPK",
            "command": "g++",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "-I", "C:/msys64/ucrt64/include",  // 头文件路径
                "-L", "C:/msys64/ucrt64/lib",     // 库文件路径
                "-lglpk"                          // 链接GLPK库
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": ["$gcc"],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

8. 编译与运行
  1. 手动编译
    g++ test.cpp -o test -I"C:/msys64/ucrt64/include" -L"C:/msys64/ucrt64/lib" -lglpk
    
  2. 在 VS Code 中
    • Ctrl+Shift+B → 选择 Build GLPK
  3. 运行程序
    • 终端中执行:./test.exe
    • 或使用 Code Runner 扩展(按 Ctrl+Alt+N

9. 预期输出
GLPK version: 4.65
Problem created.
Objective value: 1000
x = 100

故障排除
  1. 头文件缺失
    • 检查路径:C:/msys64/ucrt64/include/glpk.h
  2. 链接错误
    • 确保 -lglpk 放在文件参数后
    • 检查库路径:C:/msys64/ucrt64/lib/libglpk.a
  3. 运行时 DLL 缺失
    • C:\msys64\ucrt64\bin 添加到系统 Path
    • 或复制 libglpk.dll 到程序目录

网站公告

今日签到

点亮在社区的每一天
去签到