CCDT项目依赖库的安装OSG+wxWidgets+GC+Efficient RANSAC+MersenneTwister

来源:互联网 发布:c语言基础课程教学视频 编辑:程序博客网 时间:2024/06/07 22:31

最近实现的论文是个很大的工程,要先编译安装各种库。幸亏CGAL和boost是之前已经装好的。剩下主要比较麻烦的就是OSG(OpenSceneGraph)。因为64位的库计算能力更强,所以这里所有的库都用的是64位的。


1,OSG的安装

参考博客http://www.cnblogs.com/eaglezhao/archive/2011/07/12/eaglezhao.html 但是这个是OSG3.0版本,现在OSG已经更新到3.4了。

从官网下载源码 http://www.openscenegraph.org/index.php/download-section/stable-releases

或者prebuilt binaries  http://downloads.alphapixel.org/


这个OSG是有第三方库的,我因为觉得第三方库对我没有特别大的用处,所以没有考虑,直接在官网下载源码,用cmake得到sln文件,在VS中进行debug/release build. 编译时间非常久,大概要两个小时,然后得到lib文件夹,bin文件夹和include文件夹。


然后在vs中新建win32 console project,然后进行property的配置,分别将inclue,bin,lib的path写入project property,然后将osgd.lib;osgGAd.lib;osgDBd.lib;osgUtild.lib;osgViewerd.lib加入Additional Dependencies。


然后我用简单的程序进行测试,程序如下。

#include<osgViewer/Viewer>

#include<osgDB/ReadFile>

int main(int argc, char **argv)
{
osgViewer::Viewer viewer;
viewer.setSceneData(osgDB::readNodeFile("cow.osg"));
return viewer.run();
}


遇到一个bug,显示A dependent dll was not found。说是osgDBd.dll is missing,发现应该是没有配置环境变量导致的,所以系统会找不到dll文件。解决这个问题有三种方法: 1,要么在系统中输入environment variables。2,要么把库文件搬到win32文件夹中,因为这是系统默认的搜索路径。3,将dll文件放到project的code文件夹下,project运行时会自动搜索。我个人觉得最好用的是第一种方法。需要配置的环境变量截图如下。然后示例程序多半就可以正常运行了。


OSG_ROOT = C:\OpenSceneGraph\3.4.0\msvc2013-32bitOSG_BIN_DIR = %OSG_ROOT%\binOSG_INCLUDE_DIR = %OSG_ROOT%\includeOSG_LIB_DIR = %OSG_ROOT%\lib

We must add to the Path variable: %OSG_BIN_DIR%



2,配置Gc

Graph Cut Optimization Library, 算法来自Boykov的论文“An experimental comparison of min-cut/max-flow algorithms for energy minimization in vision”。论文作者有实现这个算法,可到他的主页上找:http://vision.csd.uwo.ca/code/ 。此外还有这个库的python版本和matlab wrapper版本: GCMex。这里用的是一个C++库,由Ondrej Danek完成,库的源码可以在他的主页找见http://www.ondrej-danek.net/en/research。


安装库的过程遇到两个问题。第一个是LINK error 1112,是由于Linker-》command line-》 additional options忘记加machine:/X64。第二个问题是在我用cmake生成了sln,然后在vs中进行安装的时候,总是报错,说是install dll文件的时候找不到gc project生成的dll文件,我以为是project哪里有bug,但是build的过程中并没有报错,最后开始怀疑生成路径,才发现原来dll文件被放到了一个奇怪的文件夹中。


然后配置Gc就同osg一样,把include路径,lib路径,dll路径都放入,然后把lib放入。最后把路径加入系统变量中。


3,配置wxWidgets


http://www.cnblogs.com/sqxy110/p/4897494.html

http://blog.csdn.net/yapingxin/article/details/51614388


我直接在官网下载的预编译库,然后主要跟着第二篇博客配置的VS project。这个库比较麻烦,除了常规的bll,lib,include文件夹的配置外,还需要额外配置一些参数,比如preprocessor definition。


我用的预编译的库,然后报了160个错,说是很多变量没有define, 我把错误拉到最下面显示是找不到setup.h,然后我在一个库文件里更改了路径之后,这些错就全都没了。但是就冒出来了一个更致命的错LNK2019:Module Type(X86) conflicts with Target Type(X64)。 这个错是来自wxbase31.lib,看起来像是我的库文件是32bit的,但是我在想要编译64bit。但是我明明下载的是64 位的库,所以我需要再检查一下。后来发现自己一时疏忽下成了32 位的库文件,重新下了库文件之后,这些error果真都没有了。但是我又遇到十几个LNK2001的错,后来发现是少加了一个preprocessor definition:WXUSINGDLL。


四、Efficient RANSAC

我在http://cg.cs.uni-bonn.de/en/publications/paper-details/schnabel-2007-efficient/ 下载了软件,然后编译了64位库,这个库只生成了静态lib库文件。但我后来用官网提供的test code的测试的时候,遇到一个bug,然后我发现其实CGAL里面现在已经对应的类了,所以其实不用自己安装这个库了,详情见下面链接http://doc.cgal.org/latest/Point_set_shape_detection_3/index.html


五、MersenneTwister

这是个生成随机数的C++库,已经好久不更新了,我暂时没有装。



原创粉丝点击