欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > XGBOOST部署到C++上(VScode)

XGBOOST部署到C++上(VScode)

2025/11/5 15:19:59 来源:https://blog.csdn.net/Jochen12345/article/details/143908405  浏览:    关键词:XGBOOST部署到C++上(VScode)

这段时间自己懈怠了一段时间,最近又由于项目的需求,需要完成一些模型的部署。故写下此步骤,理清思路。

一、下载XGBOOST并编译

第一步我们可以参考下面这个

XGBOOST机器学习算法模型以及C++环境部署应用(原创,保姆级教程)_xgboost c++-CSDN博客

这里我设置的CMAKE配置是Debug

记得创建一个新的camakebuild文件夹

这里我选择的生成器是VS2019

按照上面的文章里做法之后我们就可以用啦

可以看到这里的Install里是有lib跟include的

二、XGBOOST应用

参考文章如何将python训练的XGBoost模型部署在C++环境推理_xgboost部署单片机-CSDN博客
 

一、根据里面的教程训练好Model文件



二、替换动态链接库文件

我们可以知道现在下载的推理文件是只有.so文件,只能用于 Linux 或 macOS,而我们现在需要其在windows上运行。故我们将之前的.lib库文件复制粘贴过来。

下面就是我们最新的要推理的库文件

再次编译


再次尝试编译一下


右击All_build生成然后就在Cmake里面输出了我们的可执行文件啦.exe
 


注意:这里的.dll文件需要我们自己加上去

补充一下.lib跟.dll之间的关系

对于 .dll 文件,.lib 确实起到了类似 索引 或 引用 的作用,用于告知链接器如何与 .dll 文件进行交互。不过,在静态链接的情况下,.lib 文件直接包含了库的实现代码,并不会指向 .dll 文件。


三、修改脚本

.bat参考代码

@echo off
cd E:\convert\XGBoost-detect\cmakebuild\Debug
xgb-infer.exe


原来的是.sh文件,但是其只能在Linux上运行,如果想在Windows上运行,我们必须这样改为.bat文件。

右键run就可以运行啦,很开心,这次成功了!!


三、Debug

参考文章【C/C++】在VSCode中配置C/C++环境(使用gdb和code-runner两种方式配置)_vscode code runner-CSDN博客

由于我们目前只是简单的可执行,但我们还是需要对其进行debug,这样才能更好的写我们的程序。

tasks.json

{"version": "2.0.0","tasks": [{"type": "cppbuild","label": "C/C++: g++.exe 生成活动文件","command": "D:\\mingw64\\bin\\g++.exe","args": ["-fdiagnostics-color=always",  // 使编译输出更具可读性"-g",                          // 生成调试信息"E:/convert/XGBoost-detect/xgb-infer.cpp", // 源文件路径"-o", "E:/convert/XGBoost-detect/xgb-infer.exe", // 输出可执行文件路径"-I", "E:/convert/XGBoost-detect/xgb-include",  // xgboost 头文件路径"-I", "./eigen-3.3.7",         // Eigen 库头文件路径(如果有)"-L", "E:/convert/XGBoost-detect/xgb-lib",  // xgboost 库文件路径"-lxgboost"  // 链接 xgboost 库],"options": {"cwd": "E:/convert/XGBoost-detect"  // 设置当前工作目录为源文件所在目录},"problemMatcher": ["$gcc"],"group": "build",  // 设置任务组"detail": "编译器: D:\\mingw64\\bin\\g++.exe"}]
}

 launch.json

{"configurations": [{"name": "(gdb) 启动","type": "cppdbg","request": "launch","program": "E:/convert/XGBoost-detect/xgb-infer.exe",  // 指向可执行文件的路径"args": [],"stopAtEntry": false,"cwd": "E:/convert/XGBoost-detect",  // 设置当前工作目录为源文件所在目录"environment": [],"externalConsole": true,  // 启动外部控制台"MIMode": "gdb","miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe",  // gdb 调试器路径"setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}],"preLaunchTask": "C/C++: g++.exe 生成活动文件"  // 编译任务}]
}

总的来说,这两个配置文件之间的关系是:tasks.json 负责定义如何编译项目,而 launch.json 则定义如何启动调试。在 VS Code 中,当你点击调试按钮时,launch.json 会首先执行 tasks.json 中的编译任务,然后启动调试。

然后就成功啦! 

四、剩余的问题

本来还想一键run code运行发现不可以,不知道怎么回事,有解决这个问题的小伙伴吗?

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词