趟坑:WIN7 + VS2015 编译 阿里MNN框架

用过腾讯的ncnn,编译起来很友好;但是对3d操作算子支持不够;导致新出现的模型无法使用。

看到阿里开发的mnn,来尝尝鲜,结果断续折腾了2天,以此记之。

非常感谢:

https://uzshare.com/view/810473

https://www.yuque.com/mnn/cn/build_windows

里面详细介绍了一些配置操作。

1、设置

2、将powershell ./schema/generate.ps1换成python ./schema/generate.py

如果要编译x64,将

os.system(‘cmake -DCMAKE_BUILD_TYPE=Release ..‘)

修改成

os.system(‘cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release ..‘)

这个步骤也可以直接去

https://github.com/google/flatbuffers/releases

下flatc.exe, 在..\MNN-master\3rd_party\flatbuffers\tmp\flatc.exe

3、cmake x64 only mnn.lib/mnn.dll

mkdir vs15x64 && cd vs15x64
cmake  -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release ..
cd..
cmake --build vs15x64 --config Release

正常会有

error C2280: ‘std::unique_ptr<MNN::Pipeline,std::default_delete<_Ty>> &std::unique_ptr<_Ty,std::default_delete<_Ty>>::operator =(const std::unique_ptr<_Ty,std::default_delete<_Ty>> &)‘: attempting to reference a deleted function

解法:https://github.com/Hconk/MNN/commit/819a666135a420f680675d503fabfa14028e13d2

//Session.hpp

private:
    std::map<MNNForwardType, std::unique_ptr<Backend>> mBackends;
    std::vector<std::unique_ptr<Pipeline>> mPipelines;
    std::vector<std::pair<int, std::shared_ptr<Tensor>>> mTensors;
    std::map<std::string, Tensor*> mInputs;
    std::map<std::string, Tensor*> mOutputs;
    bool mNeedResize       = false;
    bool mValid            = true;
    Backend* mFirstBackend = nullptr;

    Session(const Session&) = delete;
    Session(const Session&&) = delete;
    Session& operator=(const Session&) = delete;
    Session& operator=(const Session&&) = delete;

 这样基本就可以获取MNN.lib 与MNN.dll了。

4、编译Conver Tool  【这个折腾我最久,好像爆粗口】

cmake  -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release -DMNN_BUILD_CONVERTER=ON -DMNN_BUILD_SHARED_LIBS=OFF ..

Q1、配置 protobuf

Win7 下,添加环境变量 protoc.exe 所在的路径,然后cmd下运行protoc.exe

Q2、tflite错误

error lnk2019: error  flatbuffers::ClassicLocale flatbuffers::ClassicLocale::instance_" ([email protected]@[email protected]@[email protected])

解法:把MNN-master\3rd_party\flatbuffers\src\util.cpp添加到tflite工程中

这样基本就可以编译过了

原文地址:https://www.cnblogs.com/cvdream/p/12106561.html

时间: 2024-10-12 01:09:34

趟坑:WIN7 + VS2015 编译 阿里MNN框架的相关文章

OSG Win7 + VS2015 编译

1. 准备 建立目标树 OpenSceneGraph-VERSION (VERSION替换为版本号) OpenSceneGraph-VERSION\3rdParty (把依赖库放在此目录) http://www.openscenegraph.org/index.php/download-section/dependenciesOpenSceneGraph-VERSION\OpenSceneGraph(源代码放在此目录) 2. 三方依赖库构建 在https://github.com/bjornbl

Win7 VS2015编译wxWidgets-3.1.0

下载 https://www.wxwidgets.org/downloads/ 打开SLN工程 D:\CPPLibs\wxWidgets-3.1.0\build\msw\wx_vc14.sln 编译 DLL Debug DLL Release 新建空Win32项目 创建一个空的main.cpp文件到工程 工程属性里加入include目录 D:\CPPLibs\wxWidgets-3.1.0\include D:\CPPLibs\wxWidgets-3.1.0\include\msvc 及Lib目

在win7 下编译MySQL源码

MySQL MySQL是一款优秀的开源数据库,在阿里.网易等各个互联网公司中有着广泛的应用.尽管各种NoSQL大行其道,但是关系型数据库依然必不可少. 作为一个新手,在Win7下用源码安装MySql数据库并不容易.我自己都折腾了好几天.今天把安装过程记录下来,其一是为了方便自己以后学习,其二则是分享过程,让学习者能够从我这篇文章中受益. 1. 编译环境及源码下载 编译环境:Visual Studio 2010 (Win7 32位) 编译工具: bison-2.4.1-setup.exe 下载地址

使用VS2015 编译 64位的boost库

别人写的编译参考: 目标:使用VS2015 编译 64位的boost库. 一直以来都是在Win32环境下Build和使用boost,但现在基本上每天都在64位Win7下工作,所以很有必要把这几天的经验总结下来. 1. 下载并解压boost 1.61.0 压缩包 2. 解压并运行批处理文件bootstrap.bat,目录下会生成两个可执行文件 3. 和32位环境不同,x64环境下编译得先从开始菜单启动Visual Studio的VS2015 x64 Native Tools Command Pro

整合 KAFKA+Flink 实例(第一部分,趟坑记录)

2017年后,一大波网络喧嚣,说流式处理如何牛叉,如何高大上,抱歉,工作满负荷,没空玩那个: 今年疫情隔离在家,无聊,开始学习 KAFKA+Flink ,目前的打算是用爬虫抓取网页数据,传递到Kafka中,再用Flink计算. 个人性格原因,我不愿意过分沉迷于纸质或者电子教程材料,也不是特别喜欢网上某些培训机构已经过时了的所谓培训视频, 喜欢动手直接写代码,所以简单翻看一点PDF教程,看了两集“培训视频”,也没说Kafka.flink两组件咋结合使用,不耐烦,直接开码(码农的糙性): 之前我写过

QT5.6.0+VS2015编译MQSQL(ACCESS)X64数据库驱动

QT5.6.0+VS2015编译MQSQL(ACCESS)数据库驱动 1 说明 l 不建议QT5.6.0使用ACCESS数据库.如果想使用轻量级的数据库,可以使用Sqlite数据库. QT想要访问Access.SQL Server等数据库可以通过ODBC的方式来访问,但是QT较高版本已不提供ODBC驱动库,需要自己编译.QT5.6.0编译出来的数据库驱动是64位,但是不建议安装Access数据库,微软本身也不建议安装64位office. PS:为什么QT5.6.0不编译32位数据库驱动:编译数据

vs2015编译ffmpeg 出现错误rtmp.lib(rtmp.obj) : error LNK2001: 无法解析的外部符号 ___iob_func

vs2015编译ffmpeg(版本3.0.2)引用外部库文件librtmp出现以下错误: rtmp.lib(rtmp.obj) : error LNK2001: 无法解析的外部符号 __imp__strtod rtmp.lib(rtmp.obj) : error LNK2001: 无法解析的外部符号 __imp__sscanf rtmp.lib(rtmp.obj) : error LNK2001: 无法解析的外部符号 __imp___snprintf rtmp.lib(rtmp.obj) : e

SVN更新项目&amp;vs2015编译项目批处理文件

SVN更新项目批处理文件代码: 新建批处理文件(xxx.bat)内容如下: @echo off @echo 项目名称"svn运行目录" update "项目文件目录" --username svn帐号 --password svn密码pause 例: @echo off @echo XXXX"c:\Program Files (x86)\VisualSVN\bin\svn.exe" update "X:\X\X" --user

在windows10下面,用vs2015编译YouCompleteMe

在windows10下面,用vs2015编译YouCompleteMe 需要安装: VS2015 Python2.7.x(x86) CMake Vundle Vim7.4 LLVM 操作步骤: 在vimrc中配置Vundle,并加入 1 Bundle 'Valloric/YouCompleteMe' 在YouCompleteMe目录下,新建ycmd_build目录,切换到该目录.执行: 1 cmake -G "Visual Studio 14" -DPATHTOLLVMROOT=&qu