Windows环境下编译C++版的MXNet问题处理

2023-11-01

最近涉及要在c++上部署人脸检测的算法,要在Windows环境下编译运行MXNet。对于不熟悉c++的小白的我真是一件又让人抓狂又掉头发的事情。网上关于c++的部署的帖子少之又少,加上又是第一次摸这些东西,所以出现的bug真的数不胜数。写这个blog的目的就是记录下这些bug以及相应的解决方案,以便以后查找。

配置目标

VS2017 ,CUDA9.2, CUDNN7.6, Mxnet1.5.1
生成libmxnet.lib和libmxnet.dll

配置过程

这里先放上MXNet官方配置的过程,流程如下以供参考
Installing MXNet on Windows
Build the C++ package

下面就会详细记录在构建过程中遇到的一些问题以及我的解决方法,和一些需要注意的地方


1.构建VS2017和cuda的时候,切记首先安装VS,再安装cuda(一定要在自定义安装选项里面勾选Visual Studio Integration)
成功安装cuda如下:
在这里插入图片描述


2.操作步骤示例
在这里插入图片描述
在以下位置勾选VC++ 2017 version 15.4 v14.11 toolset
在这里插入图片描述
并在cmd窗口键入以下命令修改Visual Studio 2017的版本(注意自己VS安装路径)


3.在cmake MXNet源码的时候:
在这里插入图片描述
因为要编译c++,所以要加入:
在这里插入图片描述


4.
问题描述:在cmake过程中出现No CMAKE_CUDA_COMPILER could be found,但是明明已经将cuda的环境变量添加过了。
在这里插入图片描述
解决方法:
打开文件C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include\crt\host_config.h,找到这一行:
在这里插入图片描述
将_MSC_VER>1913改为_MSC_VER>1920保存再次cmake,问题得到解决。


5.
在VS里完成对mxnet.sln的编译
Release ×64

  • 在ALL_BUILD属性的VC++目录,在包含目录和库目录里添加相应的opencv的路径

在这里插入图片描述

  • 在CUDA C/C++ Common 中将Target Machine Platform改为64位
    在这里插入图片描述
  • 按照自己电脑显卡的计算力填code generation
    显卡算力查询
    在这里插入图片描述
  • 根据自己电脑情况填写最大进程数
    在这里插入图片描述
  • 解决方案里面,mxnet的核数设置为0

6.
问题描述:LNK118:无法打开输入文件"C:\Program.obj"
在这里插入图片描述
解决方法:
打开mxnet_50的属性-链接器-输入-附加依赖项
在这里插入图片描述
删除C:\Program所在行
最好将每个项目的链接器输入都打开看一下,如果出现这一行 ,删掉即可。


7.
问题描述:
编译过程中出现无法解析的外部命令,并且出现一堆无法识别的cudnn库里的符号。
在这里插入图片描述
点击mxnet属性-链接器-输入-附加依赖项,发现缺少cudnn.lib
解决方法:
手动将cudnn.lib的路径"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\lib\x64\cudnn.lib"加入。


8.
问题描述:无法打开包括文件:“mxnet-cpp/op.h”:No such file or directory
在这里插入图片描述
解决方法:直接去…/build/Release文件下查看有没有libmxnet.lib和libmxnet.dll文件。如果有,那么编译已经成功。上述错误可能是官方示例文件中包含的一些东西,只要编译出以下文件,从源构建mxnet的工作便已经完成。
在这里插入图片描述


终于在自己的pc上编译完成了mxnet的源码,下一步就是如何在c++上运行mxnet训练好的模型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows环境下编译C++版的MXNet问题处理 的相关文章

随机推荐

  • 要做接口并发性能测试,总得先学会分析吧!

    引言 这篇是我3月份在公司内部做的技术分享内容 由于我在公司内部分享的内容较多以及一些特殊性 我摘取了接口并发测试从设计思路整理 测试方案设计 设计分析 代码编写这套流程 我不会承认我把40多页PPT的内容都放在这篇博文里 不管是在内部技术
  • 从零开始制作游戏外挂

    一 什么叫外挂 现在的网络游戏多是基于Internet上客户 服务器模式 服务端程序运行在游戏服务器上 游戏的设计者在其中创造一个庞大的游戏空间 各地的玩 家可以通过运行客户端程序同时登录到游戏中 简单地说 网络游戏实际上就是由游戏开发商提
  • 【专题】我们常用的功能自动化测试工具——Selenium篇

    导语 Selenium也是一个用于Web应用程序测试的工具 Selenium测试直接运行在浏览器中 就像真正的用户在操作一样 支持的浏览器包括IE Mozilla Firefox Mozilla Suite等 这个工具的主要功能包括 测试与
  • 备赛电赛学习硬件篇(二):电源板电路设计

    目录 一 接口 二 稳压部分 三 防反接电路 四 电流与线宽 一 接口 1 输入接口 要准
  • 调试osgEarth(33)分页瓦片卸载器子节点的作用-(3)渲染遍历的帧号和时间设置-TerrainCuller赋值给可渲染图层--TerrainRenderData-Layer

    继续调试 再回顾下Layer类的成员变量 就是说 初始化时调用init 添加到Map上时 setReadOptions gt open gt addedToMap 移除时用removedFromMap 总结下 Layer是个基类 有自己的唯
  • MATLAB实现doc文件的批量改名

    对于一个文件夹中的多个doc文件进行批量改名 下图中是笔者从学生那里收上来的记录表 说了要统一命名也没人听 我又懒得一个个改 只好费点时间编程了 两种实现的思路 一是从旧文件名中选取特定位置的字符 组成新的文件名 要求文件名有固定的位置 比
  • Swift之 ? 和 !

    04 June 2014 Swift语言使用var定义变量 但和别的语言不同 Swift里不会自动给变量赋初始值 也就是说变量不会有默认值 所以要求使用变量之前必须要对其初始化 如果在使用变量之前不进行初始化就会报错 var stringV
  • 产品设计七大定律

    Alan Cooper 交互设计之父 除非有更好的选择 否则就遵从标准 许多设计准则都基于人类心理学 人们如何感知 学习 推理 记忆 以及把意图转换为行动 菲茨定律 菲茨定律用来预测某点到目标位置所需要时间的数学模型 在页面中 大而近的目标
  • 共模电感

    一 背景 关电源会产生以下两类噪声 共模和差模 差模噪声 图a 的传播途径和输入电流相同 共模噪声 图b 表现为彼此相等且同相的噪声 其传播途径经绕组与地线相连 本文主要讲解抑制共模的共模电感的磁芯选择 二 共模电感的抑制原理 电感器对高频
  • Qt5 Qstring::asprintf(“%.3f“, a)精度问题,有时四舍五入,有时直接丢弃。

    问题描述 提示 这里描述具体问题 在Qt5 12开发软件时发现 用Qstring asprintf 3f a 这个函数做精度控制 有时直接四舍五入 有时直接将精度后面的数据拿掉 例如 Qstring asprintf 3f a 四舍五入 f
  • 机器学习算法 决策树

    文章目录 一 决策树的原理 二 决策树的构建 2 1 ID3算法构建决策树 2 2 C4 5 算法树的构建 2 3 CART 树的创建 三 决策树的优缺点 一 决策树的原理 决策树 Decision Tree 是一种非参数的有监督学习方法
  • 10.12黄金原油资讯直通车,黄金原油区间震荡后市操作建议

    黄金消息面与技术面解析 消息面 本周显然又是一个 超级周 数据方面 将迎来中国CPI PPI数据和进出口数据 美国将公布CPI PPI 零售销售等重磅经济数据 风险事件方面 OPEC EIA和IEA都将公布原油市场月度报告 美联储多位票委和
  • eslint+prettier+vue3格式化

    项目里面安装并配置eslint 参考官网执行如下命令 npm init eslint config 等价于 npm install eslint D 安装eslint npx eslint init 初始化配置eslint 执行后会有一些配
  • 【论文笔记】:UnitBox

    Title 2016 ACM MM UnitBox An Advanced Object Detection Network Abstract 传统的目标框含有四个独立的坐标变量 丢失了相互之间的信息 导致AP下降 Unit Box 提出了
  • java操作RabbitMQ

    1 创建虚拟主机 交换机 队列 RabbitMQ提供了自己的管理界面 可以通过管理界面来完成VirtualHost Exchange queue的创建 1 1创建VirtualHost 1 2创建交换机 创建交换机的时候需要指定虚拟主机以及
  • 切换默认python版本(解决ROS中python默认版本为python2的问题)

    1 前言 许多小伙伴在安装完ROS以后 需要基于python3写ROS程序 尤其是部署深度学习算法 但是ROS默认的python版本为python2 导致无法兼容一些基于python3写的算法 有的小伙伴会选择利用anaconda来创建py
  • 蓝桥杯单片机之AT24C02模块的使用

    蓝桥杯单片机之AT24C02时钟模块的使用 简介部分 EEPROM AT24C02 引脚示意 设备地址 Device Address 基本操作 字节写入 分析手册 字节读取 随机读取 根据需要读取的地址进行读取 分析手册 读与写函数代码 实
  • 计算并输出给定正整数n的所有因子(不包括1和自身)之和

    国二有题目 请编写函数fun 该函数的功能是 计算并输出给定正整数n的所有因子 不包括1和自身 之和 规定n的值不大于1000 例如 在主函数中从键盘给n输入的值为856 则输出为 sum 763 代码如何完成呢 分析 1 输入的数字要是整
  • 内网渗透—红日靶场三

    文章目录 0x01 环境配置 0x02 Centos getshell 0x03 Centos提权 0x04 内网穿透 设置路由 0x05 内网穿透 设置代理 0x06 获取内网目标shell 通过smb拿shell 或者本地挂代理使用k8
  • Windows环境下编译C++版的MXNet问题处理

    最近涉及要在c 上部署人脸检测的算法 要在Windows环境下编译运行MXNet 对于不熟悉c 的小白的我真是一件又让人抓狂又掉头发的事情 网上关于c 的部署的帖子少之又少 加上又是第一次摸这些东西 所以出现的bug真的数不胜数 写这个bl