VS Code用MinGW64编译C++代码安装MSYS2软件并配置GLPK(GNU Linear Programming Kit)开源库和测试引用库代码的完整具体步骤。
1. 安装 MSYS2
- 访问 MSYS2 官网
- 下载安装包(64位)
- 按默认路径安装(如
C:\msys64
) - 安装完成后,启动 MSYS2 UCRT64 终端(开始菜单中)
2. 更新系统并安装编译工具链
bash
# 更新包数据库和核心包
pacman -Syu
# 关闭窗口后重新打开终端,执行完整更新
pacman -Su
# 安装编译工具链
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
3. 安装 GLPK 库
bash
# 安装 GLPK 开发包
pacman -S mingw-w64-ucrt-x86_64-glpk
4. 配置环境变量
-
打开系统设置 → 搜索"环境变量"
-
在 用户变量 中添加:
- 变量名:
Path
- 变量值:
C:\msys64\ucrt64\bin
(确保在系统 Path 前)
- 变量名:
-
验证安装(打开新终端):
bashgcc --version glpsol --version
5. 配置 VS Code
- 安装扩展 :
- C/C++ (Microsoft)
- Code Runner (可选)
- 创建测试项目 :
- 新建文件夹(如
glpk_test
) - 创建
test.cpp
文件
- 新建文件夹(如
6. 测试代码 (test.cpp)
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)
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. 编译与运行
-
手动编译 :
bashg++ test.cpp -o test -I"C:/msys64/ucrt64/include" -L"C:/msys64/ucrt64/lib" -lglpk
-
在 VS Code 中 :
- 按
Ctrl+Shift+B
→ 选择 Build GLPK
- 按
-
运行程序 :
- 终端中执行:
./test.exe
- 或使用 Code Runner 扩展(按
Ctrl+Alt+N
)
- 终端中执行:
9. 预期输出
GLPK version: 4.65
Problem created.
Objective value: 1000
x = 100
故障排除
- 头文件缺失 :
- 检查路径:
C:/msys64/ucrt64/include/glpk.h
- 检查路径:
- 链接错误 :
- 确保
-lglpk
放在文件参数后 - 检查库路径:
C:/msys64/ucrt64/lib/libglpk.a
- 确保
- 运行时 DLL 缺失 :
- 将
C:\msys64\ucrt64\bin
添加到系统Path
- 或复制
libglpk.dll
到程序目录
- 将