Profil de Libin绿色家园PhotosBlogListes Outils Aide

Blog


29 mai

编译meshlab 1.21全接触


1. 编译环境:

       a. visual studio 2008 perfessional edition,因为已经安装了sp1,所以不确定它会对编译有何影响。

       b. QT opensource v4.50,只编译了其动态库文件(静态库无法编译完全)。

执行“Visual Studio 2008 命令提示 ”控制台工具后,在QT根目录执行QT编译环境设置脚本,该脚本同时为meshlab生成vc 项目工程的环境。一下为该脚本原文:

@echo off

set cur_dir=%cd%\

set QTDIR=%cur_dir%

set QMAKESPEC=win32-msvc2008

set ConfPara=-debug-and-release -opensource -fast -no-dbus -no-webkit

 

set PATH=%QTDIR%/bin;%PATH%

set INCLUDE=%MINGWDIR%/include;%QTDIR%/include;%QWTDIR%/src;%LOG4QTDIR%/src;%INCLUDE%

set LIB=%MINGWDIR%/lib;%QTDIR%/lib;%QWTDIR%/lib;%LIB%

 

echo ***********************************************************************

echo Created By gmail:bygreencn.gmail.com

echo Includes  : QT 4.5.0Visual Studio 2008

echo QT        : %QTDIR%

echo QMAKESPEC: %QMAKESPEC%

echo ConfPara: %ConfPara%

echo ***********************************************************************

@REM pause

@REM nmake clean

@REM nmake confclean

@REM configure.exe %ConfPara%

 

@REM pause

@REM echo build it now?

@REM nmake clean

cmd /k

 

       c.下载MeshLab's source code version 1.2.1,我下载的是All Inclusive package

2. 生成所需的VC项目工程文件

a. 上一步的控制台,进入.\ meshlab\src\external,执行qmake -tp vc -recursive external.pro

b. 上一步的控制台,进入.\ meshlab\src,执行qmake -tp vc -recursive meshlabv12.pro

3. 编译meshlab

       a. 首先编译external library。用vc打开.\ meshlab\src\external\external.sln,进入配置管理器,选择编译debugrelease版本,在选择生成解决方案,等待编译全部通过,它会生成三个库文件。bz.lib,3ds.libmuparser.lib,我发现3ds.lib的生成有些问题,会使得meshlabLINK时无法正确连接函数,我在lib3ds\type.h做了一下修改:

//#ifdef _MSC_VER

//#ifdef LIB3DS_EXPORTS

//#define LIB3DSAPI __declspec(dllexport)

//#else              

//#define LIB3DSAPI __declspec(dllimport)

//#endif           

//#else

#define LIB3DSAPI

//#endif

       b.编译meshlabmeshlab所有的plugin工程的设置有些问题,这些工程都制定输出为动态库,但是输出文件却指定为输出为*****.lib,这导致所有的plugins的工程都失败。我的做法是把指定输出为*****.dll,这里应该必须为dll,因为New的对话框中会根据plugins文件夹下的内容动态生成,因为这些应该也是动态加载的,因为静态库是不行的了。

1). 需要为io_lib指定其需要的lib3ds.lib(external library)

2). 需要为io_epoch指定其需要的bz2.lib和头文件的位置(external library)

如果哪个plugin工程出现类似这个错误:

1>Project : error PRJ0019: 某个工具从以下位置返回了错误代码: "MOC v3dImportDialog.h"

1>项目: warning PRJ0018 : 未找到下列环境变量:

1>$(QTDIR)

只需要用生成VC项目的那个控制台环境进入相应的plugin目录,执行qmake -tp vc -recursive xxxxxx.pro来重新生成该工程即可。

 

编译整个项目,大概需要十多分钟。然后就可以进入.\meshlab\src\meshlab\debug或者.\meshlab\src\meshlab\release执行meshlab.exe;记得要把QTDLL库文件拷贝到这个目录或者将QTDLL库所在目录加入到系统PATH中啊。

 

Commentaires

Veuillez patienter...
Le commentaire entré est trop long. Raccourcissez-le.
Vous n'avez rien entré. Réessayez.
Il est actuellement impossible d'ajouter votre commentaire. Réessayez plus tard.
Pour ajouter un commentaire, tu dois avoir l'autorisation de tes parents. Demander l'autorisation
Tes parents ont désactivé les commentaires.
Il est actuellement impossible de supprimer votre commentaire. Réessayez plus tard.
Vous avez dépassé le nombre maximal de commentaires qu'il est possible d'envoyer le même jour. Réessayez dans 24 heures.
Votre compte a pu laisser les commentaires désactivés parce que nos systèmes indiquent que vous risquez d'arroser d'autres utilisateurs de messages. Si vous pensez que votre compte a été désactivé par erreur, contactez l'assistance en ligne de Windows Live.
Effectuez la vérification de sécurité ci-dessous pour finaliser l'envoi de votre commentaire.
Les caractères entrés pour la vérification de sécurité doivent correspondre à ceux de l'image ou du fichier audio.
Libin a désactivé les commentaires dans cette page.

Rétroliens

L'URL de rétrolien de ce billet est :
http://greensui.spaces.live.com/blog/cns!57ACA2C80B34A3DA!473.trak
Blogs Web qui font référence à ce billet
  • Aucune