使用MinGW静态编译Assimp

到了5月份了。没有写一篇日志,于是自己从知识库里面拿出一篇文章充数吧。这次将要解说怎样在Windows下使用MinGW静态编译Assimp。

Assimp是眼下比較全的3D格式解析库了。熟悉3D游戏开发的同行都知道,3D的格式非常混乱,各种3D格式在不同场合都有他们特定的应用,游戏引擎仅仅可以解析少部分3D格式。很多其它有用的格式来自游戏公司自己定义的格式。而在开源领域,Assimp算是比較全的3D格式导入库了。它对3D格式理解深入。非常适合整合至3D图形引擎中。让你们的程序支持很多其它3D的格式。

要静态编译Assimp。首先须要准备Assimp的源代码、cmake和MinGW。

MinGW我选用的是Qt自带的库,大家能够自己选择合适的MinGW或是TDM-MinGW。这里我将Assimp的源代码和cmake分享一下,以便自己日后查阅。

Assimp下载地址:这里(提取码:60c5)

Cmake的下载地址:这里(提取码:46ac)

下载Assimp后,解压之,放在合适的位置,我这里放在E:/Develop中。

同一时候下载cmake后,解压之,放在合适的位置。我这里放在E:/Develop中。

然后cmd进入命令行,我们主要在命令行进行编译。

1、 首先环境变量设置,我这里是这么设置的:

set path=%path%;E:/Develop/cmake-2.8.12.1-win32-x86/bin;E:/Develop/Qt5.3/Tools/mingw482_32/bin

2、然后到assimp库的根文件夹下

cd $${Assimp文件夹}

3、使用cmake进行构建

cmake -G "MinGW Makefiles" ^
-DENABLE_BOOST_WORKAROUND=ON -DBUILD_STATIC_LIB=ON ^
-DCMAKE_RC_COMPILER=E:/Develop/Qt5.3/Tools/mingw482_32/bin/windres.exe ^
-DCMAKE_MAKE_PROGRAM=E:/Develop/Qt5.3/Tools/mingw482_32/bin/mingw32-make.exe ^
-DCMAKE_LFLAGS=-static ^
-DCMAKE_LFLAGS_DLL=-static ^
-DDX9_INCLUDE_PATH=E:/Develop/Qt5.3/Tools/mingw482_32/i686-w64-mingw32/include ^
-DD3D9_LIBRARY=E:/Develop/Qt5.3/Tools/mingw482_32/i686-w64-mingw32/lib/libd3d9.a ^
-DD3DX9_LIBRARY=E:/Develop/Qt5.3/Tools/mingw482_32/i686-w64-mingw32/lib/libd3dx9.a .

假设你的计算机安装了DirectX库。那么cmake会查找头文件以及库文件。不必设置DX9_INCLUDE_PATH、D3D9_LIBRARY和D3DX9_LIBRARY。

4、在mingw32-make之前,改动一下源码。由于编译会出现错误:

在$${Assimp文件夹}/include/assimp/types.h中改动:

在52行后加入#include <string.h>,即可了。

5、改动$${Assimp文件夹}/tools/assimp_view/CMakeFiles/assimp_viewer.dir/build.make中418行。删除$(RC_FLAGS);改动$${Assimp文件夹}/tools/assimp_cmd/CMakeFiles/assimp_cmd.dir/build.make中的58行,删除$(RC_FLAGS)

6、mingw32-make -j 4进行构建。

假设顺利的话,libassimp.a以及assimp_cmd.exe和assimp_viewer.exe都会顺利地构建。

最后假设想要使用assimp_cmd.exe和assimp_viewer.exe的话,须要libgcc_s_dw2-1.dll、libstdc++-6.dll以及libwinpthread-1.dll,这些都能够在MinGW文件夹中找到,我想用assimp_viewer这句话必须有d3dx9_43.dll。当然,我在这里分享assimp_viewer。下载地址这里

在Windows通过使用MinGW静态编译Assimp的更多相关文章

  1. 在Windows下使用MinGW静态编译Assimp

    使用MinGW静态编译Assimp 到了5月份了,没有写一篇日志,于是自己从知识库里面拿出一篇文章充数吧.这次将要解说怎样在Windows下使用MinGW静态编译Assimp. Assimp是眼下比較 ...

  2. Qt for Windows:Qt 5.4.0 MinGW 静态编译版本制作 (转)

    大致流程: 1.安装Qt(源码版)以及其他必要的环境 2.编译/安装 3.配置 4.使用 ----------正文分割线---------- 1.安装Qt(源码版) 1.1 下载Qt(两个地址二选一即 ...

  3. windows 7下mingw+msys编译ffmpeg

      windows 7下mingw+msys编译ffmpeg   1-->下载安装MingW,mingw-get-inst-20120426.exe  http://sourceforge.ne ...

  4. 用mingw静态编译Qt4.8.2和Qt5.1.1(需要修改不少源码)

    因为一些乱七八糟的原因,我需要用mingw静态编译Qt4.8.2和Qt5.1.1.经历了一天的折腾之后,自觉编译一下Qt还是件颇为麻烦的事情,故将过程略作总结,以备不时之需. 首先,在编译之前,我需要 ...

  5. Qt5.8 在windows下mingw静态编译

    官方对编译一些条件介绍:https://doc.qt.io/qt-5/windows-requirements.html 在默认情况下,用QtCreator编译程序时,使用的是动态编译.编译好的程序在 ...

  6. 开源项目:windows下使用MinGW+msys编译ffmpeg

    本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处.    FFmpeg是在Linux平台下开发的,但 ...

  7. windows 下使用 MinGW + msys 编译 ffmpeg

    本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处.    FFmpeg是在Linux平台下开发的,但 ...

  8. Windows下使用mingw+cmake编译C/C++程序

    按照正常流程安装好mingw和cmake后,仍然是无法直接使用cmake编译处MakeFile文件的,我们需要在CMakeLists.txt中做一些配置. 首先,在PROJECT之前,设置: SET( ...

  9. Windows下安装MinGW,编译c/c++时出现cannot find -lpthread解决办法

    由于Mingw下没有带pthread库,所以在eclipse中设置多线程动态链接库,也不管用.需要自己下载, ftp://sourceware.org/pub/pthreads-win32/pthre ...

随机推荐

  1. JAVA学习笔记 -- 数据结构

    一.数据结构的接口 在Java中全部类的鼻祖是Object类,可是全部有关数据结构处理的鼻祖就是Collection和Iterator接口,也就是集合与遍历. 1.Collection接口 Colle ...

  2. How to search a table in a store proc and open the store proc

    1. select*fromdba_dependencieswherereferenced_name='CNTL_ISSUE'andTYPE='PROCEDURE' 2. selecttextfrom ...

  3. oncreate 测量尺寸

    在android中,在oncreate里面只是将布局信息设置好,并没有进行布局,因此是没法进行测量view或者屏幕的长高,可以通过下面的observer来观察,当view布局完成之后会回调下面的两个接 ...

  4. 14.10.3 InnoDB Checkpoints InnoDB 检查点:

    14.10.3 InnoDB Checkpoints InnoDB 检查点: 你的log files 变的很大可能会降低磁盘性能在checkpointing的时候, 它通常设置设置log files总 ...

  5. VC++笔记七

    动态链接库修改文件名问题? eg:GetRadarFS.dll->RadarModel.dll; 注意修改:打开文件GetRadarFs.def 修改 LIBRARY  "GetRad ...

  6. cocos2d-x 3.0来做一个简单的游戏教程 win32平台 vs2012 详解献给刚開始学习的人们!

    原代码来自于网络,因为cocos2d-x 3.0的资料,的确不多,与曾经版本号的接口非常难对上, 所以网上非常多样例都无法调试,对于新学习cocos2d-x 的同学,难度添加了,所以出一个超具体的样例 ...

  7. UVA它11292 - Dragon of Loowater

    Problem C: The Dragon of Loowater Once upon a time, in the Kingdom of Loowater, a minor nuisance tur ...

  8. 关于Hibernate数据库连接进程释放

    最近手里头又一桩事情蛮好玩的,就是用Hibernate进行批处理的时候,发现连接数暴增,oracle连接进程数吓死人.解决方案:不是把连接池设置成最大,那样服务器承载不了.及时清除缓存.另外在hibe ...

  9. MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据

    看到下图,是通过Jqgrid实现表格数据的基本增删查改的操作.表格数据增删改是一般企业应用系统开发的常见功能,不过不同的是这个表格数据来源是非关系型的数据库MongoDB.nosql虽然概念新颖,但是 ...

  10. uva 10069 Distinct Subsequences(高精度 + DP求解子串个数)

    题目连接:10069 - Distinct Subsequences 题目大意:给出两个字符串x (lenth < 10000), z (lenth < 100), 求在x中有多少个z. ...