1 关于vs的版本
visual studio是一个集成开发环境,而vc++是一个c++的compiler,vc++有一个版本和一个版本号,vs也有一个版本,它们的对应关系如下:
MSVC++ 4.x _MSC_VER == 1000 MSVC++ 5.0 _MSC_VER == 1100 MSVC++ 6.0 _MSC_VER == 1200 MSVC++ 7.0 _MSC_VER == 1300 MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio 2003) MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005) MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008) MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010) MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012) MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013) MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015) MSVC++ 14.1 _MSC_VER == 1910 (Visual Studio 2017) 也就是说,vs2013使用的是MSVC++ 12.0的c++编译器,该c++编译器的版本号是1800。 2 opencv的x64库版本 在配置opencv的时候,如果编译器是MSVC,那么按照下面的方式来存放OpenCV_RUNTIME,即opencv的动态库和静态库。 if(MSVC) if(CMAKE_CL_64) set(OpenCV_ARCH x64) set(OpenCV_TBB_ARCH intel64) else() set(OpenCV_ARCH x86) set(OpenCV_TBB_ARCH ia32) endif() if(MSVC_VERSION EQUAL 1400) set(OpenCV_RUNTIME vc8) elseif(MSVC_VERSION EQUAL 1500) set(OpenCV_RUNTIME vc9) elseif(MSVC_VERSION EQUAL 1600) set(OpenCV_RUNTIME vc10) elseif(MSVC_VERSION EQUAL 1700) set(OpenCV_RUNTIME vc11) elseif(MSVC_VERSION EQUAL 1800) set(OpenCV_RUNTIME vc12) elseif(MSVC_VERSION EQUAL 1900) set(OpenCV_RUNTIME vc14) endif() 这里的MSVC_VERSION即上表中的_MSC_VER,当1800是,是vc12,msvc++ 12.0版本的编译器,即visual studio 2013,这样看来, vc12是msvc++编译器的版本,而该编译器版本对应的vs是2013。