win7 + VS2010配置opencv、boost、QT、QT-addin、CGAL
2016-01-14 14:35
501 查看
步骤一: 安装VS2010
错误:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
发生情况:VS成功安装之后,新建C++新项目,代码如下,运行调试
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"VS testing..."<<endl;
system("PAUSE");
return 0;
}
原因说明:当安装VS2012之后,原来的.NET 4.0会被替换为.NET 4.5。卸载VS2012时,不会恢复.NET 4.0。
当VS2012安装后,VS2010的cvtres.exe就无法使用了。如果你的PATH环境变量中VS2010的工具路径第一个出现,而且链接器需要将.res文件转换为COFF 对象格式,就会导致LNK1123错误。
当VS生成PE文件头时,使用的cvtres.exe版本错误,不能与当前的.NET平台兼容。
解决方案:当前系统中存在两个cvtres.exe文件,版本不同。让VS2010使用.NET 4.5的cvtres.exe程序。
具体步骤:
重命名或删除:(vs2010安装的位置)C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe
这样C:\Windows\Microsoft.NET\Framework\v4.0.30319 (.NET 4.5)中的cvtres.exe文件就可以被VS2010使用。
解决结果:调试成功、运行成功、成功显示“VS testing...”
步骤二:安装opencv及在VS2010中的配置
1. 编译好的opencv包直接放在一个位置上,比如:C:\Program Files (x86)\下的文件夹中(或者可以用CMake来编译opencv源代码包,选择VS2010编译器编译,这样opencv的代码最后才能也用在VS项目中不出现错误)
2. 对应VS2010的相应opencv编译过的代码在C:\Program Files (x86)\opencv\build\x86\vc10中,里面分别有bin、lib、staticlib文件夹,其中bin所在的文件夹路径需要加入到计算机的系统环境变量中去,将C:\Program Files (x86)\opencv\build\x86\vc10\bin加入到用户变量和系统变量的path中(用户变量表示当年用户可以进行操作使用,系统变量对所有用户都适用)
3. VC++目录配置
可执行文件目录:C:\Program Files (x86)\opencv\build\x86\vc10\bin
包含目录:C:\Program Files (x86)\opencv\build\include;C:\Program Files (x86)\opencv\build\include\opencv;C:\Program Files (x86)\opencv\build\include\opencv2;
库目录:C:\Program Files (x86)\opencv\build\x86\vc10\lib;C:\Program Files (x86)\opencv\build\x86\vc10\staticlib;
4. 链接器->输入->依赖项配置
加入:
opencv_calib3d231d.lib;opencv_contrib231d.lib;opencv_core231d.lib;opencv_features2d231d.lib;opencv_flann231d.lib;opencv_gpu231d.lib;opencv_highgui231d.lib;opencv_imgproc231d.lib;opencv_legacy231d.lib;opencv_ml231d.lib;opencv_objdetect231d.lib;opencv_ts231d.lib;opencv_video231d.lib;%(AdditionalDependencies)
注意:
a)以上的%(AdditionalDependencies)不能被去除,否则项目不能成功调试,而且这种错误又很难找到。
b)在附加依赖项的窗口里,保持“从父级或项目默认设置继承”的选项被选中,否则项目可能不能成功调试或运行,因为VS2010本身也会继承一些系统的类。
问题:testVS.exe 中的 0x651f7cbe (msvcp90d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0x00000024 时发生访问冲突
出现情况:运行以下代码,运行到 cout<<a; 位置就会跳入ostream文件中,只是错误
#include "stdafx.h"
#include <iostream>
#include <cv.h>
using namespace std;
using namespace cv;
int _tmain(int argc, _TCHAR* argv[])
{
Mat a(3,4,CV_64FC1,Scalar(1));
cout<<a;
cout<<"VS testing..."<<endl;
system("PAUSE");
return 0;
}
原因说明:#include <iostream>调用了ostream文件,在运行出错过程中发现,该ostream文件所在的位置是\Microsoft
Visual Studio 9.0\VC\include目录,而不是\Microsoft Visual Studio 10.0\VC\include
这两个文件夹中都包含了ostream文件。
在VS2008中的ostream中应该是没有包含对opencv中Mat结构的“cout<<”输出流的重写/定义,所以不能直接用 “cout<<a;”来输出矩阵a;而VS2010可以成功地识别这行代码,成功输出。
VS2008的安装目录\Microsoft Visual Studio 9.0\VC\include下面就包含了标准库的头文件。ostream也被包含。
同样地,VS2010的安装目录\Microsoft Visual Studio 10.0\VC\include下也包含了类似的标准库文件。
解决方案:
检查环境变量,其中用户变量里有
path->
C:\Users\apple\Desktop\opencv\install\install\bin;C:\Program Files (x86)\opencv\build\x86\vc10\bin
path2->
C:\Program Files (x86)\opencv\build\common\tbb\intel64\vc9
将path2中的输入更改为 C:\Program Files (x86)\opencv\build\common\tbb\intel64\vc10,注意一定要进行用户注销或者重新启动,这样才可以刷新环境变量的输入。
解决结果:
能够成功运行并输出Mat a
![](file:///C:/Users/apple/AppData/Local/YNote/data/babywong@126.com/6b4e7304153a46a999f99ef7ae6be703/clipboard.png)
以上说明opencv配置成功,可以使用opencv
步骤三:安装boost
1. 将boost源文件包放在一个位置(boost源文件大概是300M+左右,编译生成和建立boost库之后,会变成几个G,因为多了很多lib和dll文件)
2. 使用VS2010命令编译器
运行cmd
输入 cd\ 退到根目录
输入 cd Program Files (x86)
输入 cd Microsoft Visual Studio 10.0
输入 cd VC\bin
以上表示进入文件夹C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin
输入 vcvars32.bat
表示用VS2010编译器来开始编译
3. cmd再次退回到根目录,进入boost所在的位置
输入 cd \
输入 cd Program Files (x86)\boost\boost_1_57_vs2010
输入 bootstrap
显示 Builiding Boost.Build engine开始运行……
4. 以上在boost_1_57_vs2010文件夹中生成一个b2.exe,运行b2.exe
输入 b2 link=static,shared threading=single,multi variant=debug,release
多了stage文件夹和子文件夹lib,存储着编译的dll、lib文件等
5. 添加 C:\Program Files (x86)\boost\boost_1_57_vs2010 到系统变量中,可以随便取一个变量名BOOST_ROOT,再设置值为路径C:\Program Files (x86)\boost\boost_1_57_vs2010
6. 配置VS:打开项目的工具-->选项-->项目与解决方案-->VC++目录
库文件 --> C:\Program Files (x86)\boost\boost_1_57_vs2010\stage\lib
包含文件 --> C:\Program Files (x86)\boost\boost_1_57_vs2010\boost
步骤四:安装QT和QT-addin
1. 安装QT5.5.1(对应VS2010),安装路径不能包括空格和中文
2. 安装QT-addin1.2.2(对应VS2008、2010、2012)
3. 设置系统环境变量:增加 C:\QT\Qt5.5.1\5.5\msvc2010\bin 的环境变量
4. 配置VS:打开项目的工具-->选项-->项目与解决方案-->VC++目录
可执行文件 C:\QT\Qt5.5.1\5.5\msvc2010\bin
包含文件 C:\QT\Qt5.5.1\5.5\msvc2010\include;C:\QT\Qt5.5.1\5.5\msvc2010\include\QtGui;C:\QT\Qt5.5.1\5.5\msvc2010\include\QtCore
5. 建立Qt插件:
选择菜单上的“QT”选项- >“Launch Designer”, 启动designer : 放入一个“label”,内容写为:helloQT。然后保存为Hello.ui,该文件被放在了项目文件夹中,再将它添加到VS项目的源文件。
6. 编译生成HelloUi.h
将以上的复制到 C:\QT\Qt5.5.1\5.5\msvc2010\bin 中去,这个文件夹中存在一个uic.exe(不能将),然后运行cmd,输入:uic xxx.ui -o xxx.h
7. 加入程序代码:
----1----
问题:“NO default Qt version found。Please check Qt Visual Studio Add-in settings”.
出现情况:VS项目中点击 Qt->Launch Designer 时提示
解决方案:Qt->Qt Option->增加Qt中bin所在位置的文件夹 C:\QT\Qt5.5.1\5.5\msvc2010
解决结果:可以成功点击Qt->Launch Designer弹出界面
-----2-----
问题:
1>c:\users\apple\documents\visual studio 2010\projects\testvs\testvs\testvs.cpp(20): fatal error C1083: 无法打开包括文件:“QtGui/QApplication”: No such file or directory
原因分析:新版Qt5.5.1将QApplication放置在Qt的include中的QtWidget包中
解决方案:去除QtGui/QApplication中的QtGui,直接写QApplication,相关include目录加入include/QtWidget
-----3-----
问题:error C2664: “QApplication::QApplication(int &,char **,int)”: 不能将参数 2 从“_TCHAR *[]”转换为“char **”
解决方案:项目->属性->常规:
字符集:Unicode字符集->多字符集
-----4-----
问题:
error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: virtual __thiscall QApplication::~QApplication(void)" (__imp_??1QApplication@@UAE@XZ),该符号在函数 _main 中被引用
原因分析:Qt相关的依赖项未被加入到项目中
解决方案:项目->属性->链接器->输入->依赖项:
解决结果:调试成功
-----5-----
问题:无法启动此程序,因为计算机中丢失Qt5Cored.dll
原因分析:Qt相关的依赖项未被加入到项目中
解决方案:项目->属性->链接器->
PATH=C:\QT\Qt5.5.1\5.5\msvc2010\bin;$(TargetDir)\DLLS
注意一定要加上上面的PATH=....$(TargetDir)\DLLS语句,直接在调试->环境中输入C:\QT\Qt5.5.1\5.5\msvc2010\bin;不能运行成功
解决结果:调试并且运行成功,跳出QWindow小窗,命令提示符显示一些有关参数
步骤五:安装并编译CGAL
(可以直接拷贝其他电脑上VS2010编译好的CGAL文件夹)
1. CMake
"Where is the source code" 和"Where to build the binaries" 中指定编译的CGAL文件夹
configure
选择Visual Studio 10 2010,点击Finish
点击Generate
2.
完成之后在CGAL文件夹里一个名字叫CGAL的解决方案被创建,打开,分别在Debug和Release模式下编译ALL_BUILD
所有的CGAL库都会在在该文件夹/lib文件夹中
3. VS配置
可执行文件 --> C:\Program Files (x86)\CGAL\CGAL4.5_vs2010\bin
库文件 --> C:\Program Files (x86)\CGAL\CGAL4.5_vs2010\lib; C:\Program Files (x86)\CGAL\CGAL4.5_vs2010\auxiliary\gmp\lib;
包含文件 --> C:\Program Files (x86)\CGAL\CGAL4.5_vs2010\auxiliary\gmp\include; C:\Program Files (x86)\CGAL\CGAL4.5_vs2010\include;
----------1----------
问题:
1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::operator<<(double)" (??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@N@Z) 已经在 opencv_contrib231d.lib(spinimages.obj) 中定义
原因说明:
这种情况主要是C运行期函数库和MFC的库冲突造成的。具体的办法就是将那个提示出错的库放到另外一个库的前面。
解决方案:
调节CGAL、boost、QT、opencv配置的顺序,项目->属性->VC++目录,可执行文件目录、包含目录、引用目录、库目录、源目录:按照CGAL、QT、boost、opencv顺序排列输入。
解决结果:
调试不再出现 error LNK2005: "public: ×××已经在×××中定义,调试成功
----------2------------
问题:无法启动此程序,因为计算机中丢失CGAL-vc100-mt-4.5.dll
出现情况:调试成功,运行后跳出窗口
解决方案:点击 工程属性-->配置属性-->调试-->环境
设置值为“PATH=<dll路径>;$(TargetDir)\DLLS”,比如 PATH=C:\QT\4.7.4\bin;C:\Program Files (x86)\CGAL\4.5\bin;C:\Program Files (x86)\CGAL\4.5\auxiliary\gmp\lib;C:\Program Files (x86)\boost\boost_1_57_0\stage\lib;$(TargetDir)\DLLS”。
boost、QT、CGAL对应的dll通常可能存在于:
1. boost:<安装路径>/stage/lib(里面存在boost_system-vc90-mt-gd-1_57.dll, boost_chrono-vc90-mt-1_57.dll, boost_thread-vc90-mt-gd-1_57.dll等);
2. Qt:<安装路径>/bin(里面存在QtCore4.dll, QtCored4.dll, QtGui4.dll, QtGuid4.dll, QtOpenGL4.dll等);
3. CGAL:<安装路径>/bin (里面存在CGAL_Qt4-vc90-mt-gd-4.5.dll, CGAL_ImageIO-vc90-mt-4.5.dll等) <安装路径>/auxiliary/gmp/lib (里面存在libgmp-10.dll)
4. opencv:<安装路径>/bin (里面存在opencv_calib231d.dll)
解决结果:
调试成功,程序成功运行!
错误:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
发生情况:VS成功安装之后,新建C++新项目,代码如下,运行调试
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"VS testing..."<<endl;
system("PAUSE");
return 0;
}
原因说明:当安装VS2012之后,原来的.NET 4.0会被替换为.NET 4.5。卸载VS2012时,不会恢复.NET 4.0。
当VS2012安装后,VS2010的cvtres.exe就无法使用了。如果你的PATH环境变量中VS2010的工具路径第一个出现,而且链接器需要将.res文件转换为COFF 对象格式,就会导致LNK1123错误。
当VS生成PE文件头时,使用的cvtres.exe版本错误,不能与当前的.NET平台兼容。
解决方案:当前系统中存在两个cvtres.exe文件,版本不同。让VS2010使用.NET 4.5的cvtres.exe程序。
具体步骤:
重命名或删除:(vs2010安装的位置)C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe
这样C:\Windows\Microsoft.NET\Framework\v4.0.30319 (.NET 4.5)中的cvtres.exe文件就可以被VS2010使用。
解决结果:调试成功、运行成功、成功显示“VS testing...”
步骤二:安装opencv及在VS2010中的配置
1. 编译好的opencv包直接放在一个位置上,比如:C:\Program Files (x86)\下的文件夹中(或者可以用CMake来编译opencv源代码包,选择VS2010编译器编译,这样opencv的代码最后才能也用在VS项目中不出现错误)
2. 对应VS2010的相应opencv编译过的代码在C:\Program Files (x86)\opencv\build\x86\vc10中,里面分别有bin、lib、staticlib文件夹,其中bin所在的文件夹路径需要加入到计算机的系统环境变量中去,将C:\Program Files (x86)\opencv\build\x86\vc10\bin加入到用户变量和系统变量的path中(用户变量表示当年用户可以进行操作使用,系统变量对所有用户都适用)
3. VC++目录配置
可执行文件目录:C:\Program Files (x86)\opencv\build\x86\vc10\bin
包含目录:C:\Program Files (x86)\opencv\build\include;C:\Program Files (x86)\opencv\build\include\opencv;C:\Program Files (x86)\opencv\build\include\opencv2;
库目录:C:\Program Files (x86)\opencv\build\x86\vc10\lib;C:\Program Files (x86)\opencv\build\x86\vc10\staticlib;
4. 链接器->输入->依赖项配置
加入:
opencv_calib3d231d.lib;opencv_contrib231d.lib;opencv_core231d.lib;opencv_features2d231d.lib;opencv_flann231d.lib;opencv_gpu231d.lib;opencv_highgui231d.lib;opencv_imgproc231d.lib;opencv_legacy231d.lib;opencv_ml231d.lib;opencv_objdetect231d.lib;opencv_ts231d.lib;opencv_video231d.lib;%(AdditionalDependencies)
注意:
a)以上的%(AdditionalDependencies)不能被去除,否则项目不能成功调试,而且这种错误又很难找到。
b)在附加依赖项的窗口里,保持“从父级或项目默认设置继承”的选项被选中,否则项目可能不能成功调试或运行,因为VS2010本身也会继承一些系统的类。
问题:testVS.exe 中的 0x651f7cbe (msvcp90d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0x00000024 时发生访问冲突
出现情况:运行以下代码,运行到 cout<<a; 位置就会跳入ostream文件中,只是错误
#include "stdafx.h"
#include <iostream>
#include <cv.h>
using namespace std;
using namespace cv;
int _tmain(int argc, _TCHAR* argv[])
{
Mat a(3,4,CV_64FC1,Scalar(1));
cout<<a;
cout<<"VS testing..."<<endl;
system("PAUSE");
return 0;
}
原因说明:#include <iostream>调用了ostream文件,在运行出错过程中发现,该ostream文件所在的位置是\Microsoft
Visual Studio 9.0\VC\include目录,而不是\Microsoft Visual Studio 10.0\VC\include
这两个文件夹中都包含了ostream文件。
在VS2008中的ostream中应该是没有包含对opencv中Mat结构的“cout<<”输出流的重写/定义,所以不能直接用 “cout<<a;”来输出矩阵a;而VS2010可以成功地识别这行代码,成功输出。
VS2008的安装目录\Microsoft Visual Studio 9.0\VC\include下面就包含了标准库的头文件。ostream也被包含。
同样地,VS2010的安装目录\Microsoft Visual Studio 10.0\VC\include下也包含了类似的标准库文件。
解决方案:
检查环境变量,其中用户变量里有
path->
C:\Users\apple\Desktop\opencv\install\install\bin;C:\Program Files (x86)\opencv\build\x86\vc10\bin
path2->
C:\Program Files (x86)\opencv\build\common\tbb\intel64\vc9
将path2中的输入更改为 C:\Program Files (x86)\opencv\build\common\tbb\intel64\vc10,注意一定要进行用户注销或者重新启动,这样才可以刷新环境变量的输入。
解决结果:
能够成功运行并输出Mat a
![](file:///C:/Users/apple/AppData/Local/YNote/data/babywong@126.com/6b4e7304153a46a999f99ef7ae6be703/clipboard.png)
以上说明opencv配置成功,可以使用opencv
步骤三:安装boost
1. 将boost源文件包放在一个位置(boost源文件大概是300M+左右,编译生成和建立boost库之后,会变成几个G,因为多了很多lib和dll文件)
2. 使用VS2010命令编译器
运行cmd
输入 cd\ 退到根目录
输入 cd Program Files (x86)
输入 cd Microsoft Visual Studio 10.0
输入 cd VC\bin
以上表示进入文件夹C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin
输入 vcvars32.bat
表示用VS2010编译器来开始编译
3. cmd再次退回到根目录,进入boost所在的位置
输入 cd \
输入 cd Program Files (x86)\boost\boost_1_57_vs2010
输入 bootstrap
显示 Builiding Boost.Build engine开始运行……
4. 以上在boost_1_57_vs2010文件夹中生成一个b2.exe,运行b2.exe
输入 b2 link=static,shared threading=single,multi variant=debug,release
多了stage文件夹和子文件夹lib,存储着编译的dll、lib文件等
5. 添加 C:\Program Files (x86)\boost\boost_1_57_vs2010 到系统变量中,可以随便取一个变量名BOOST_ROOT,再设置值为路径C:\Program Files (x86)\boost\boost_1_57_vs2010
6. 配置VS:打开项目的工具-->选项-->项目与解决方案-->VC++目录
库文件 --> C:\Program Files (x86)\boost\boost_1_57_vs2010\stage\lib
包含文件 --> C:\Program Files (x86)\boost\boost_1_57_vs2010\boost
步骤四:安装QT和QT-addin
1. 安装QT5.5.1(对应VS2010),安装路径不能包括空格和中文
2. 安装QT-addin1.2.2(对应VS2008、2010、2012)
3. 设置系统环境变量:增加 C:\QT\Qt5.5.1\5.5\msvc2010\bin 的环境变量
4. 配置VS:打开项目的工具-->选项-->项目与解决方案-->VC++目录
可执行文件 C:\QT\Qt5.5.1\5.5\msvc2010\bin
包含文件 C:\QT\Qt5.5.1\5.5\msvc2010\include;C:\QT\Qt5.5.1\5.5\msvc2010\include\QtGui;C:\QT\Qt5.5.1\5.5\msvc2010\include\QtCore
5. 建立Qt插件:
选择菜单上的“QT”选项- >“Launch Designer”, 启动designer : 放入一个“label”,内容写为:helloQT。然后保存为Hello.ui,该文件被放在了项目文件夹中,再将它添加到VS项目的源文件。
6. 编译生成HelloUi.h
将以上的复制到 C:\QT\Qt5.5.1\5.5\msvc2010\bin 中去,这个文件夹中存在一个uic.exe(不能将),然后运行cmd,输入:uic xxx.ui -o xxx.h
7. 加入程序代码:
----1----
问题:“NO default Qt version found。Please check Qt Visual Studio Add-in settings”.
出现情况:VS项目中点击 Qt->Launch Designer 时提示
解决方案:Qt->Qt Option->增加Qt中bin所在位置的文件夹 C:\QT\Qt5.5.1\5.5\msvc2010
解决结果:可以成功点击Qt->Launch Designer弹出界面
-----2-----
问题:
1>c:\users\apple\documents\visual studio 2010\projects\testvs\testvs\testvs.cpp(20): fatal error C1083: 无法打开包括文件:“QtGui/QApplication”: No such file or directory
原因分析:新版Qt5.5.1将QApplication放置在Qt的include中的QtWidget包中
解决方案:去除QtGui/QApplication中的QtGui,直接写QApplication,相关include目录加入include/QtWidget
-----3-----
问题:error C2664: “QApplication::QApplication(int &,char **,int)”: 不能将参数 2 从“_TCHAR *[]”转换为“char **”
解决方案:项目->属性->常规:
字符集:Unicode字符集->多字符集
-----4-----
问题:
error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: virtual __thiscall QApplication::~QApplication(void)" (__imp_??1QApplication@@UAE@XZ),该符号在函数 _main 中被引用
原因分析:Qt相关的依赖项未被加入到项目中
解决方案:项目->属性->链接器->输入->依赖项:
解决结果:调试成功
-----5-----
问题:无法启动此程序,因为计算机中丢失Qt5Cored.dll
原因分析:Qt相关的依赖项未被加入到项目中
解决方案:项目->属性->链接器->
PATH=C:\QT\Qt5.5.1\5.5\msvc2010\bin;$(TargetDir)\DLLS
注意一定要加上上面的PATH=....$(TargetDir)\DLLS语句,直接在调试->环境中输入C:\QT\Qt5.5.1\5.5\msvc2010\bin;不能运行成功
解决结果:调试并且运行成功,跳出QWindow小窗,命令提示符显示一些有关参数
步骤五:安装并编译CGAL
(可以直接拷贝其他电脑上VS2010编译好的CGAL文件夹)
1. CMake
"Where is the source code" 和"Where to build the binaries" 中指定编译的CGAL文件夹
configure
选择Visual Studio 10 2010,点击Finish
点击Generate
2.
完成之后在CGAL文件夹里一个名字叫CGAL的解决方案被创建,打开,分别在Debug和Release模式下编译ALL_BUILD
所有的CGAL库都会在在该文件夹/lib文件夹中
3. VS配置
可执行文件 --> C:\Program Files (x86)\CGAL\CGAL4.5_vs2010\bin
库文件 --> C:\Program Files (x86)\CGAL\CGAL4.5_vs2010\lib; C:\Program Files (x86)\CGAL\CGAL4.5_vs2010\auxiliary\gmp\lib;
包含文件 --> C:\Program Files (x86)\CGAL\CGAL4.5_vs2010\auxiliary\gmp\include; C:\Program Files (x86)\CGAL\CGAL4.5_vs2010\include;
----------1----------
问题:
1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::operator<<(double)" (??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@N@Z) 已经在 opencv_contrib231d.lib(spinimages.obj) 中定义
原因说明:
这种情况主要是C运行期函数库和MFC的库冲突造成的。具体的办法就是将那个提示出错的库放到另外一个库的前面。
解决方案:
调节CGAL、boost、QT、opencv配置的顺序,项目->属性->VC++目录,可执行文件目录、包含目录、引用目录、库目录、源目录:按照CGAL、QT、boost、opencv顺序排列输入。
解决结果:
调试不再出现 error LNK2005: "public: ×××已经在×××中定义,调试成功
----------2------------
问题:无法启动此程序,因为计算机中丢失CGAL-vc100-mt-4.5.dll
出现情况:调试成功,运行后跳出窗口
解决方案:点击 工程属性-->配置属性-->调试-->环境
设置值为“PATH=<dll路径>;$(TargetDir)\DLLS”,比如 PATH=C:\QT\4.7.4\bin;C:\Program Files (x86)\CGAL\4.5\bin;C:\Program Files (x86)\CGAL\4.5\auxiliary\gmp\lib;C:\Program Files (x86)\boost\boost_1_57_0\stage\lib;$(TargetDir)\DLLS”。
boost、QT、CGAL对应的dll通常可能存在于:
1. boost:<安装路径>/stage/lib(里面存在boost_system-vc90-mt-gd-1_57.dll, boost_chrono-vc90-mt-1_57.dll, boost_thread-vc90-mt-gd-1_57.dll等);
2. Qt:<安装路径>/bin(里面存在QtCore4.dll, QtCored4.dll, QtGui4.dll, QtGuid4.dll, QtOpenGL4.dll等);
3. CGAL:<安装路径>/bin (里面存在CGAL_Qt4-vc90-mt-gd-4.5.dll, CGAL_ImageIO-vc90-mt-4.5.dll等) <安装路径>/auxiliary/gmp/lib (里面存在libgmp-10.dll)
4. opencv:<安装路径>/bin (里面存在opencv_calib231d.dll)
解决结果:
调试成功,程序成功运行!
相关文章推荐
- Qt QtableView小结
- QT4中setEnable和setDisable的区别
- Qt,pro文件详解
- 自动化测试工具QTP(破解)10.0版本
- Qt 操作sqlite总结
- [原创]解决使用Qt creator时…
- 从 Qt 的 delete 说开来
- QTableView 添加进度条 添加按钮 TreeWidget 增删改
- QT5 动态链接库的创建和使用(QT自己做动态库给自己使用)
- QT 的信号与槽机制介绍
- QSettings介绍
- Qt一直全屏状态问题
- Qt5.5.1调试时,程序没有在断点处停止
- QT搭建UNP开发环境
- Qt使用插件的形式调用DLL
- Qt5.5.0 vs2013 64位动态库译成功
- qt post服务器
- Qt文件夹遍历
- Qt 打印图片
- qt 取消快捷键和自定义按键