VS2010编译好OpenCV3.1.0后,想自己新建一个工程,使用了cmake生成。
先新建一个文件夹,里面存放两个文件和一个图像文件,再另外新建一个build文件夹。
OpenCVHello_cmake\CMakeLists.txt
OpenCVHello_cmake\OpenCVHello.cpp
OpenCVHello_cmake\ubuntu.png
OpenCVHello_cmake\build
文件1、CMakeLists.txt
#CMakeLists.txt
cmake_minimum_required( VERSION 2.8 )
project( OpenCVHello )
# 添加c++ 11标准支持
set( CMAKE_CXX_FLAGS "-std=c++11" )
# 寻找OpenCV库
set(OpenCV_DIR "D:\\OpenCV\\opencv-3.1.0\\opencv\\build\\install")
find_package( OpenCV REQUIRED )
# 添加头文件
include_directories( ${OpenCV_INCLUDE_DIRS} )
#include_directories( "D:\\OpenCV\\opencv-3.1.0\\opencv\\build\\install\\include" )
add_executable( OpenCVHello OpenCVHello.cpp )
# 链接OpenCV库
target_link_libraries( OpenCVHello ${OpenCV_LIBS}
文件2:OpenCVHello.cpp
#include <opencv2/core/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
string imageName("E:\\FENG\\workspace_vc10\\OpenCVHello_cmake\\ubuntu.png"); // by default
if( argc > 1)
{
imageName = argv[1];
}
Mat image;
image = imread(imageName.c_str(), IMREAD_COLOR); // Read the file
if( image.empty() ) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl ;
return -1;
}
namedWindow( "Display window", WINDOW_AUTOSIZE ); // Create a window for display.
imshow( "Display window", image ); // Show our image inside it.
waitKey(0); // Wait for a keystroke in the window
system("pause");
return 0;
}
图像文件自己任选。
使用cmake-gui,生成vs2010工程文件。
在vs2010界面,按F5,出现了错误……见下文。
--------------------------------------------------------------------------------------------------------------------------------------
本部分内容转载自:关于Cannot find or open the PDB file ntdll.dll gdi32.dll user32.dll 的解决办法
如果用VS2010编译工程时出现以下问题:
'M5DApp.exe': Loaded 'C:\Windows\System32\ntdll.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\kernel32.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\KernelBase.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\user32.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\gdi32.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\lpk.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\usp10.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\msvcrt.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\msvcr100d.dll', Symbols loaded.
'M5DApp.exe': Loaded 'C:\Windows\System32\imm32.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\msctf.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\uxtheme.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\dwmapi.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\advapi32.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\sechost.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\rpcrt4.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\ole32.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\cryptbase.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\clbcatq.dll', Cannot find or open the PDB file
'M5DApp.exe': Loaded 'C:\Windows\System32\oleaut32.dll', Cannot find or open the PDB file
The program '[1700] M5DApp.exe: Native' has exited with code 0 (0x0).
网上资源整理如下:
解决方法一(已验证可用):VS2010:工具--》选项--》》调试--》符号,选择Microsoft,然后确认
接着随便编译一个程序,过程会灰常的慢。 看到此目录下符号缓存了吗?C:\Users\XXX\AppData\Local\Temp\SymbolCache 找到这个目录拷贝出来,找个地方存放。接下来就是去掉Microsoft符号服务器,要是不去,每次都要从Microsoft下载很麻烦,已经缓存了,我们就可以利用好这些缓存。
解决方法二(未测试):
1. Ctrl + F5运行就可以了(最好的解决方案)
2. 在cmd命令行下执行程序。
3. 把"Microsoft Symbol Servers"勾上(Tools -> Options -> Debugging -> Symbols).
4. http://blog.163.com/chenpeijie0_0/blog/static/1830945712011780275118
原因:程序输出的地方是系统而不是vs2012
5.Debug->Options and Settings->The left to check: Enable Source server support->Symbols->the left to check: Microsoft Symbol Servers->Runing(F5)->OK
注:解决方案还有就是在每个main函数结束的时候即return 0之前加上 system("pause");
--------------------------------------------------------------------------------------------------------------------------------------
程序运行结果: