昨天在VS2012環境下調用openCV出現了問題,不知道問題出現在哪裏,今天找到了。
代碼很簡單,如下:
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("1.jpg.jpg");//讀入一張圖片
imshow("1.jpg",img);//在窗口中顯示載入的圖片
waitKey(6000);//等待6000ms後窗口自動關閉
}
注意:由於我的電腦上圖片後綴.jpg隱藏了,而圖片名稱爲1.jpg,所以要加兩個.jpg才能正常加載顯示,否則會出現錯誤。
一 問題描述
MSVCRTD.lib(crtexew.obj) : error LNK2019: 無法解析的外部符號 _WinMain@16,該符號在函數 ___tmainCRTStartup 中被引用
Debug\jk.exe : fatal error LNK1120: 1 個無法解析的外部命令
二 原因及解決辦法
產生這個問題的真正原因是C語言運行時找不到適當的程序入口函數,
一般情況下,如果是windows程序,那麼WinMain是入口函數,在VS2010中新建項目爲“win32項目”
如果是dos控制檯程序,那麼main是入口函數,在VS2010中新建項目爲“win32控制檯應用程序”
而如果入口函數指定不當,很顯然c語言運行時找不到配合函數,它就會報告錯誤。
修改設置適應你的需求
如果你需要的是windows程序:
1.菜單中選擇 Project->Properties, 彈出Property Pages窗口
2.在左邊欄中依次選擇:Configuration Properties->C/C++->Preprocessor,然後在右邊欄的Preprocessor Definitions對應的項中刪除_CONSOLE, 添加_WINDOWS.
3.在左邊欄中依次選擇:Configuration Properties->Linker->System,然後在右邊欄的SubSystem對應的項改爲Windows(/SUBSYSTEM:WINDOWS)
如果你需要的是控制檯程序:
1.菜單中選擇 Project->Properties, 彈出Property Pages窗口
2.在左邊欄中依次選擇:Configuration Properties->C/C++->Preprocessor,然後在右邊欄的Preprocessor Definitions對應的項中刪除_WINDOWS, 添加_CONSOLE.
3.在左邊欄中依次選擇:Configuration Properties->Linker->System,然後在右邊欄的SubSystem對應的項改爲CONSOLE(/SUBSYSTEM:CONSOLE)
我選擇的是控制檯程序。