Halcon學習(四) 匯出C++程式碼,在VS2010下編譯
Halcon中除了依賴於HDevelop平臺的操作,其他運算元都支援了C++語言介面,比如:
read_image()運算元:
而dev_display()則沒有C++的介面:
我們使用Halcon匯出一個簡單的功能運算元:
在HDevelop中只新增read_image (Image, 'fabrik')
一行程式碼,選擇“檔案”–“匯出”,在“匯出”視窗中選擇匯出檔案的格式(C++ - HALCON/C++)並選擇匯出路徑:
這樣在路徑下我們會看到一個.cpp檔案:
這個檔案中,功能已經被定義到了action()函式中,所以我們需要的也只是該函式中的內容:
void action()
{
// Local iconic variables
HObject ho_Image;
ReadImage(&ho_Image, "fabrik");
}
可以看到,這個函式中呼叫的其實就是HDevelop幫助文件中read_image (Image, 'fabrik')
運算元的C++介面。
我們使用VS2010測試這個匯出的函式,新建一個工程並新增一個空的檔案,在Halcon匯出的cpp檔案中摘錄如下程式碼:
#ifndef __APPLE__
# include "HalconCpp.h"
# include "HDevThread.h"
# if defined(__linux__) && !defined(NO_EXPORT_APP_MAIN)
# include <X11/Xlib.h>
# endif
#else
# ifndef HC_LARGE_IMAGES
# include <HALCONCpp/HalconCpp.h>
# include <HALCONCpp/HDevThread.h>
# else
# include <HALCONCppxl/HalconCpp.h>
# include <HALCONCppxl/HDevThread.h>
# endif
# include <stdio.h>
# include <HALCON/HpThread.h>
# include <CoreFoundation/CFRunLoop.h>
#endif
using namespace HalconCpp;
using namespace std;
int main()
{
HObject ho_Image;
ReadImage(&ho_Image, "1.jpg");
return 0;
}
設定VS2010
1.注意Halcon版本與VS2010中的應用程式對應
如果Halcon是64位的,那麼其對應的lib同樣是64位,這是選擇Win32程式的話會導致無法載入庫,所以我們需要想VS2010中的Win32改成X64。
2.引入必要的標頭檔案
在(專案屬性)–(配置屬性)–(C/C++)–(常規)–“附加包含目錄”中新增路徑:
$(HALCONROOT)/include
$(HALCONROOT)/include/halconcpp
3.包含庫路徑
在(專案屬性)–(配置屬性)–(連結器)–(常規)–“附加庫目錄”中新增庫路徑:
$(HALCONROOT)/lib/$(HALCONARCH)
4.新增庫
在(專案屬性)–(配置屬性)–(連結器)–(輸入)–“附加依賴項”中新增庫:
halconcpp.lib
5.新增dll檔案
將缺少的dll檔案放進工程目錄原始檔所在的位置。Halcon的dll檔案在*\bin\x64-win64路徑下。