win7系统下用cmake配置opencv一直出错是什么原因

win7系统下用cmake配置opencv一直出错是什么原因,第1张

用CMake导出VC++项目文件

运行cmake-gui,设置路径为OpenCV安装路径(本文档假定安装位置为:D:\Program Files\OpenCV2.0),并创建子目录D:\Program Files\OpenCV2.0\vc2008,用于存放编译结果。

然后点 configure,在d出的对话框内选择 Visual Studio 9 2008。

如果是VC++2008的Express版本,则不支持OpenMP,所以需要取消ENABLE_OPENMP选项。VC++ 2008(不是Express版本)支持OpenMP,如果你使用VC++2008,强烈建议不要取消这个选项。

编译 OpenCV Debug和Release版本库

完成上一步骤后,将在D:\Program Files\OpenCV2.0\vc2008目录下生成OpenCV.sln的VC Solution File,请用VC++ 2008 打开OpenCV.sln,然后执行如下 *** 作:

在Debug下,选择Solution Explorer里的 Solution OpenCV,点右键,运行"Rebuild Solution";如编译无错误,再选择INSTALL项目,运行"Build"。

在Release下,选择Solution Explorer里的 Solution OpenCV,点右键,运行"Rebuild Solution";如编译无错误,再选择INSTALL项目,运行"Build"。

此时,OpenCV的*d.dll文件(for debug)和*.dll文件(for release)将出现在D:\Program Files\OpenCV2.0\vc2008\bin目录中;OpenCV的*d.lib文件(for debug)和*.lib文件(for release)将出现在D:\Program Files\OpenCV2.0\vc2008\lib目录;头文件*.h出现在D:\Program Files\OpenCV2.0\vc2008\include\opencv中。

可以被VC++ 2008 调用的OpenCV动态库生成完毕。

配置Windows环境变量Path

将D:\Program Files\OpenCV2.0\vc2008\bin加入Windows系统环境变量Path中。加入后可能需要注销当前Windows用户(或重启)后重新登陆才生效

为VC++ 2008 配置OpenCV环境

打开VC++ 2008 ,菜单 Tools ->Options ->Projects and Solutions ->VC++ Directories

Show directories for选择include files,加入目录 D:\Program Files\OpenCV2.0\vc2008\include\opencv

Show directories for选择library files,加入目录 D:\Program Files\OpenCV2.0\vc2008\lib

关闭VC++ 2008

一、安装cmake

1、这一步比较简单,下载安装最新版本cmake-2.8,开始如下安装

2、注意这里选择第二个选项,为所有的用户添加系统变量

3、选择安装到目录 F:\CMake 2.8,个人建议最好安装在C盘目录下。

4、安装完毕后确认一下系统变量中有没有红色框中的目录,若没有需要手动添加进去。

5、cmake安装完毕!

二、安装Boost库

1、下载最新版本,当前为boost_1_55_0

2、按 Win+R组合键输入cmd进入命令窗口:

切换当前目录为boost的安装目录(G:\boost_1_55_0),输入bootstrap.bat

3、执行完上述命令后会在安装目录下生成如下exe文件

4、继续在DOS窗口中输入bjam.exe,程序会根据你当前安装的编译环境(vs2010,vs2012,vs2013)等自动选择与之相适应的库文件和包含文件等。

此过程大概需要20分钟左右。根据下面第二个图片可以算出我的编译环境为MSVC-12.0即VS2013.

5、20分钟左右后可以看到如下界面,说明Boost库配置完成

三、安装CGAL

1、下载CGAL,这里我下载的是CGAL-4.4这个版本(当前最新的)

2、安装位数选择32位

如果选择64位进行安装,则会在以后配置完毕后出现类似“无法识别的外部符号。。。”等问题,很难进行正确配置。所以这里最好全部选择32位进行安装。

3、安装目录我选择C:\Program Files\CGAL-4.4

安装在其他目录时可能会出现用Cmake编译时出现好几外错误。可以尝试通过安装在C盘进行解决。

4、选择如下几项,单击下一步

5、安装完成后可能会出现如下提示,则需要手动添加F:\CGAL-4.4\auxiliary\gmp\lib到Path变量中

6、此时CGAL安装完成

四、用Cmake配置CGAL库

1、打开Cmake软件选择如下目录,注:两个目录是相同的

2、单击“config"-选择如下编译器(默认是32位,与前面安装软件一定要保持一致)

3、单击确定后,出现如下界面说明配置成功

4、找到如下图的这一项,选中,再次单击"config"进行配置

5、单击Generate,此时界面应如下。

6、此时在CGAL安装目录下出现如下文件:CGAL.sln

7、打开此文件,此时编译器会自动组建一个解决方案。如下图

8、选择32位debug模式,按F7进行编译,编译完成后如下图所示,表明CGAL至此完全配置成功。

五、举例测试CGAL

新建一个控制台应用程序,并添加如下代码

#include <iostream>

#include <boost/format.hpp>

#include <QtGui>

#include <CGAL/Qt/GraphicsViewNavigation.h>

#include <QLineF>

#include <QRectF>

int main(int argc, char **argv)

{

QApplication app(argc, argv)

QGraphicsScene scene

scene.setSceneRect(0,0, 100, 100)

scene.addRect(QRectF(0,0, 100, 100), QPen(QColor(255,0,0)))

scene.addLine(QLineF(0,0, 100, 100))

scene.addLine(QLineF(0,100, 100, 0))

QGraphicsView* view = new QGraphicsView(&scene)

CGAL::Qt::GraphicsViewNavigation navigation

view->installEventFilter(&navigation)

view->viewport()->installEventFilter(&navigation)

view->setRenderHint(QPainter::Antialiasing)

view->show()

return app.exec()

}

添加包含库目录, *** 作如下图,注意红色框中的添加内容

添加附加库目录, *** 作如下图,注意红色框中的添加内容

直接编译运行此时会出现如下错误,别急,我们离成功只差一步了

>test.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QColor::QColor(int,int,int,int)" (__imp_??0QColor@@QAE@HHHH@Z),该符号在函数 _main 中被引用

1>test.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QBrush::QBrush(void)" (__imp_??0QBrush@@QAE@XZ),该符号在函数 _main 中被引用

1>test.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QBrush::~QBrush(void)" (__imp_??1QBrush@@QAE@XZ),该符号在函数 _main 中被引用

1>test.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall QWidget::show(void)" (__imp_?show@QWidget@@QAEXXZ),该符号在函数 _main 中被引用

1>test.obj : error LNK2001: 无法解析的外部符号 "protected: virtual bool __thiscall QWidget::winEvent(struct tagMSG *,long *)" (?winEvent@QWidget@@MAE_NPAUtagMSG@@PAJ@Z)

1>test.obj : error LNK2001: 无法解析的外部符号 "protected: virtual void __thiscall QWidget::windowActivationChange(bool)" (?windowActivationChange@QWidget@@MAEX_N@Z)

1>G:\Cpp\Midaxis\CGAL512\Debug\CGAL512.exe : fatal error LNK1120: 81 个无法解析的外部命令

添加附加依赖项。

选择“链接器”---“输入”,在其中输入如下添加LIB文件

phonon4.libQAxContainer.libQtCLucene4.libQtCore4.libQtDeclarative4.libQtDesigner4.libQtGui4.libqtmain.libQtOpenGL4.lib

再次编译运行,即可大功告成了!

注意configure之后,是否生成opencv_world.lib是要自己勾选的。opencv_world.lib只是所有lib的一个打包,在使用的时候,直接在附加依赖项添加这一个就可以,主要是为了比较方便。没有这个的话,把其他所有的lib文件全添加是一个效果。

一般不需要生成opencv_world,不然在实际工程项目里会造成比较大量的冗余。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11125409.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存