当前位置: 首页 > news >正文

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

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); // 下界>=0glp_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 到程序目录
http://www.dtcms.com/a/334407.html

相关文章:

  • 实现Android图片手势缩放功能的完整自定义View方案,结合了多种手势交互功能
  • 纸板制造制胶工艺学习记录4
  • Redis集群设计实战:从90%缓存命中率看高并发系统优化
  • Windows常见文件夹cache的作用还有其他缓存类型文件夹的作用
  • backward怎么计算的是torch.tensor(2.0, requires_grad=True)变量的梯度
  • 【论文阅读】Multimodal Graph Contrastive Learning for Multimedia-based Recommendation
  • Linux 下 安装 matlab 2025A
  • 机器学习——CountVectorizer将文本集合转换为 基于词频的特征矩阵
  • 软件的终极:为70亿人编写70亿个不同的软件
  • C++面试题及详细答案100道( 31-40 )
  • SysTick寄存器(嘀嗒定时器实现延时)
  • cPanel Python 应用部署流程
  • 记录一下第一次patch kernel的经历
  • CSV 生成 Gantt 甘特图
  • 2^{-53} 单位舍入误差、机器精度、舍入的最大相对误差界限
  • 【QGIS数据篇】QGIS 3.40 栅格计算器经典实用公式全集
  • 高并发场景下如何避免重复支付
  • 17.3 全选购物车
  • 双椒派E2000D开发板LED驱动开发实战指南
  • 线程回收与线程间通信
  • [Python 基础课程]抽象类
  • 强化学习入门教程(附学习文档)
  • (第十七期)HTML图像标签详解:从入门到精通
  • 创新词汇表设计:UniVoc - 中英文混合处理的新方案
  • 安卓11 12系统修改定制化_____列举与安卓 9、10 系统在定制化方面的差异与权限不同
  • 数学建模Topsis法笔记
  • 非功能性需求设计:可解释性、鲁棒性、隐私合规
  • 【数据结构初阶】--排序(五):计数排序,排序算法复杂度对比和稳定性分析
  • 启发式合并 + 莫队 恋恋的心跳大冒险
  • 汽车大灯ABD算法介绍