使用cmake生成第一个opencv工程

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 的解决办法

扫描二维码关注公众号,回复: 2332991 查看本文章

如果用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");

--------------------------------------------------------------------------------------------------------------------------------------

程序运行结果:

猜你喜欢

转载自blog.csdn.net/qq_27158179/article/details/81172031