1. visual studio2012能編譯C++代碼嗎
visual studio 2012是微軟的一個編譯器。
他可以編寫多種語言,如:C、C++、C#、F#等.。
編寫方法可以看http://v.youku.com/v_show/id_XMjM3MzYwNDUy.html
這是一個VS2010的教程。
裡面只要把F5該成ctrl+f5就可以不加system ("pause")。
visual C++ 6.0 迅雷下載:
2. opencv2.4.13配置vs2012中的vs 指的是什麼
2015/12/21發布的Version 3.1.0,最新發布是2016/05/19日的Version 2.4.13。
Version 3.1.0隻有64位的開發包,還沒(不知道未來會不會)支持32位的編譯環境,這里使用Version 2.4.13。
下載完成之後雙擊「opencv-2.4.13.exe」,彈出安裝(解壓)對話框:
選擇安裝路徑,這里使用的是「D:\ProgramFilesD」,點擊「Extract」後開始解壓;
值得注意的一點是不需要在安裝目錄里額外建「opencv」的文件夾,OpenCV安裝包解壓出來的根目錄就是「opencv」。
2.本機環境變數和路徑配置
點擊開始菜單,右擊計算機->屬性->高級系統設置->高級->環境變數,打開環境變數設置對話框,如下圖:
在用戶變數里新建變數OpenCV,變數值:D:\ProgramFilesD\opencv\build;
在用戶變數里新建變數path,變數值:D:\ProgramFilesD\opencv\build\x86\vc11\bin;
在這里可能有人會有疑問:編譯器是VS2012,變數值不應該是XX\vc12\bin嗎?注意,在OpenCV配置中,vc11即對應VS2012,vc12對應的是VS2013。
另一點要關注的是上述變數值到底應該是x86還是x64?這里x86還是x64的選擇跟你的電腦是32位還是64位無關,vs2012編譯環境默認的使用win32編譯器,所以選擇x86。
在系統變數里編輯(或添加)Path變數,變數值:D:\ProgramFilesD\opencv\build\x86\vc11\bin,注意要使用英文輸入下的分號和前面已有的路徑分開,添加完之後需要重啟或注銷計算機,環境變數才會生效。
3. IDE工程項目屬性配置
新建Win32控制台應用程序,工程名命名為MyFirstOpenCV,在其後的選項里選擇空項目:
右擊MyFirstOpenCV工程->添加新建項,在彈出的對話框中選擇C++ 文件(.cpp),添加源文件,命名為MyFirstOpenCV.cpp:
在視圖目錄的下拉菜單中打開屬性管理器,在屬性管理器的Debug|Win32目錄上單擊選擇「添加新項目屬性表」,新建屬性表,並命名為OpenCV_Debug_Setting.props,如下圖所示:
雙擊打開屬性表OpenCV_Debug_Setting.props。選擇通用屬性->VC++目錄,在包含目錄里添加3個目錄:
D:\ProgramFilesD\opencv\build\include\opencv2
D:\ProgramFilesD\opencv\build\include\opencv
D:\ProgramFilesD\opencv\build\include
同樣在VC++目錄下,在庫目錄里添加1個目錄:
D:\ProgramFilesD\opencv\build\x86\vc11\lib
選擇通用屬性->鏈接器->輸入->附加依賴項,在附加依賴項里添加庫文件:
opencv_ml2413d.lib
opencv_calib3d2413d.lib
opencv_contrib2413d.lib
opencv_core2413d.lib
opencv_features2d2413d.lib
opencv_flann2413d.lib
opencv_gpu2413d.lib
opencv_highgui2413d.lib
opencv_imgproc2413d.lib
opencv_legacy2413d.lib
opencv_objdetect2413d.lib
opencv_ts2413d.lib
opencv_video2413d.lib
opencv_nonfree2413d.lib
opencv_ocl2413d.lib
opencv_photo2413d.lib
opencv_stitching2413d.lib
opencv_superres2413d.lib
opencv_videostab2413d.lib
OK,至此,VS2012環境下配置OpenCV2.4.13的工作已經全部完成了,對於之後創建的OpenCV工程,只需要添加本工程的屬性配置即可,不再需要一步一步重復配置。
方法:首先保存本工程的屬性配置文件OpenCV_Debug_Setting.props到備用文件夾,該屬性配置文件在本項目中的路徑是:
D:\VS2012Test\MyFirstOpenCV\MyFirstOpenCV
之後在新創建的工程中,在屬性管理器中添加OpenCV_Debug_Setting.props屬性表即可:
4.OpenCV項目測試
最後讓我們來測試一下所做的配置是否OK。
在程序的源文件MyFirstOpenCV.cpp文件中加入如下代碼,用於在窗口中顯示一幅圖片:
[cpp] view plain print?
<pre name="code" class="cpp">#include <iostream>
#include<core/core.hpp>
#include<highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main()
{
[cpp] view plain print?
//讀入圖片,注意圖片路徑
Mat image=imread("D:\\Picture\\lena.jpg");
//圖片讀入成功與否判定
if(!image.data)
{
cout<<"you idiot!where did you hide lena!"<<endl;
//等待按鍵
system("pause");
return -1;
}
//創建一個名字為「Lena」的圖像顯示窗口,(不提前聲明也可以)
namedWindow("Lena",1);
//顯示圖像
imshow("Lena",image);
//等待按鍵
waitKey();
return 0;
}
如果配置正確,編譯運行後令我們魂牽夢繞的lena大美女就會出現在屏幕上對我們微笑了。
OpenCV的神奇美妙世界的大門已經為你敞開,Go for it!
3. vs2012自帶的是什麼編譯器
微軟自己的編譯器
vs/vc/bin/cl.exe
4. 如何確定VS編譯器版本
如何確定VS編譯器版本
_MSC_VER是MSVC編譯器的內置宏,定義了編譯器的版本,_MSC_VER 值對應版本關系
MSVC++ 11.0 _MSC_VER = 1700 (Visual Studio 2012)
MSVC++ 10.0 _MSC_VER = 1600 (Visual Studio 2010)
MSVC++ 9.0 _MSC_VER = 1500 (Visual Studio 2008)
MSVC++ 8.0 _MSC_VER = 1400 (Visual Studio 2005)
MSVC++ 7.1 _MSC_VER = 1310 (Visual Studio 2003)
MSVC++ 7.0 _MSC_VER = 1300 (Visual Studio 2002)
MSVC++ 6.0 _MSC_VER = 1200
MSVC++ 5.0 _MSC_VER = 1100
example:
#if (_MSC_VER == 1300) //vc7
#import "acax16ENU.tlb" no_implementation raw_interfaces_only named_guids
#elif (_MSC_VER == 1200) //vc6
#import "acad.tlb" no_implementation raw_interfaces_only named_guids
#elif (_MSC_VER == 1400) //vc8
#import "acax17ENU.tlb" no_implementation raw_interfaces_only named_guids
#elif (_MSC_VER == 1500) //vc9
#import "acax18ENU.tlb" no_implementation raw_interfaces_only named_guids
#endif
在程序中加入_MSC_VER宏可以根據編譯器版本讓編譯器選擇性地編譯一段程序。例如一個版本編譯器產生的lib文件可能不能被另一個版
本的編譯器調用,那麼在開發應用程序的時候,在該程序的lib調用庫中放入多個版本編譯器產生的lib文件。在程序中加入_MSC_VER宏
,編譯器就能夠在調用的時根據其版本自動選擇可以鏈接的lib庫版本,如下所示。
#if _MSC_VER >= 1400 // for vc8, or vc9
#ifdef _DEBUG
#pragma comment( lib, "SomeLib-vc8-d.lib" )
#else if
#pragma comment( lib, "SomeLib-vc8-r.lib" )
#endif
#else if _MSC_VER >= 1310 // for vc71
#ifdef _DEBUG
#pragma comment( lib, "SomeLib-vc71-d.lib" )
#else if
#pragma comment( lib, "SomeLib-vc71-r.lib" )
#endif
#else if _MSC_VER >=1200 // for vc6
#ifdef _DEBUG
#pragma comment( lib, "SomeLib-vc6-d.lib" )
#else if
#pragma comment( lib, "SomeLib-vc6-r.lib" )
#endif
#endif
5. visual C++6.0和visual 2012有哪些區別
功能肯定是VS2012更強,不過對於日常學習需要來說VC6.0更適合,VS2012編譯器更嚴格,好多函數不能使用,比如scanf,fscanf等,編譯直接報錯。如果日常學習使用VC6.0夠用了,或者用Vs2010
6. VS2012代碼編輯區不同顏色代表什麼
左邊黃色表示那一行的內容已修改,綠色表示未修改。保存後黃色變綠色。
右邊默認配色是:藍色是關鍵字,深紫色是宏,淡藍色是自定義類型,棕色是字元串和字元,灰色是函數形參。
7. visual C++6.0和2012有哪些區別
visual C++6.0和2012均為開發環境,C++是編程語言,兩者不能混為一談。如果學習開發,建議選擇版本較高的開發環境。
8. VS2010和VS2012究竟支持怎樣的C標准
記得以前看過一篇文章,說微軟主要的方向是對c++的編譯器提供新特性的支持(對c++11還是做了許多支持的),而不是c編譯器。
再加上c/c++ 本來是visual studio中的二等公民,c編譯器好像還是不支持c99的(沒看到微軟說過支持,visualstudio中測試也是不支持)。如果非要用這些特性,並且不考慮用visual studio的話,可以選擇gcc編譯器。
另外,對於你那個補充的代碼,c語言的標准一直就支持這種形式的。變數定義只要是在塊開頭(花括弧)就可以了,而不是非要在函數開頭,所以那是能編譯過去的。
9. Visual Studio 2012(C語言) 與visual C++ 6.0 語法主要在哪些地方不一樣
就語法支持來說,應該差別不大,因為VS至今都沒實現C99標准
如果有問題,主要是這幾個方面:
你寫的程序本身有問題,可能涉及到一些未定義問題,這類問題不會提示error,但會使得結果出錯,比如i=++i+(++i)+(++i)等,同一句語句多次使用前綴後綴++
微軟從VS2005開始,重寫了一套庫函數,原先的庫函數比如scanf等被認為是不安全的,要改成scanf_s之類的函數(參數也改了,具體可以查看MSDN的幫助文檔),或者在最開頭定義#define_CRT_SECURE_NO_WARNINGS來無視安全警告
看清楚文件後綴,是否是.c的,.cpp是用C++解析的,不過問題應該不大,因為你寫的是C的,不是C++。只是有一些風格比較老的C++不能用了,比如#include<iostream.h>,不過C不存在這些問題。
引用的windows庫函數過舊,微軟更新過大量的API,如果使用了一些系統的API,就必須注意是否過期被淘汰,或者該API被修改(或者是使用方法被修改),比如要事先#define,或引入某些其他的頭文件等等
代碼風格太老,比如void main(){}等等,新編譯器無法使用,特別是gcc,但VS好像可以使用
一般主要問題是針對C++的,因為C++的標准更新過多次,但C的標准還是C99,而且微軟目前也不打算實現C99,不過VC6.0的很多部分已經和現在的標准、風格脫節了,最好不要再用VC++6.0
10. VS編譯器!
這個和c++沒什麼關系,所有c代碼都可以直接移植,c++向下兼容c,代碼不能用估計是編譯器支持的c語言標准問題.
比如c99或者c11標准,如果是scanf不能用 需要改成s_scanf這樣的錯誤,那就是c標準的問題了,
或者你編譯器要是vs2010以上,十有八九就是編譯器的問題了,修改你的函數吧,新的安全規則比舊的好,學新的沒壞處