2011-04-11 85 views
2

通常在MATLAB我可以編譯使用它使用了OpenCV函數的MEX文件:如何鏈接一個64位的MATLAB MEX文件來OpenCV的庫

mex -O "mxFunc.cpp" -I"C:\OpenCV2.1\include/opencv" -L"C:\OpenCV2.1\lib" -lcv210 -lcvaux210 -lcxcore210 -lhighgui210 

不過,在切換到64位版本MATLAB,我現在得到未解決的符號,例如

mxFunc.obj : error LNK2019: unresolved external symbol cvReleaseImage referenced in function mexFunction 

我該如何解決這個問題?

系統:Windows 7 64位; MSVC 2005; MATLAB R2010b 64位; OpenCV 2.1.0。

回答

3

一般:您需要重新編譯使用64位的庫。

據我所知,這還不夠。如果你使用STL(並且OpenCV使用很多),你需要使用Matlab使用的相同的CRT版本。所以你需要使用相同版本的MSVC什麼的Mathworks球員...

你可以檢查libmex.dll的依賴關係,找出需要哪個CRT。之後你需要安裝正確的Visual C++(通常免費版本就夠了)。

+0

使用64位庫工作。我必須使用CMAKE配置新的64位MSVC解決方案,將「Generator」命名爲「Visual Studio 8 2005 Win64」。我不知道我使用的編譯器是否與用於生成libmex.dll的編譯器相同,但它仍然有效。 – user664303 2011-04-12 10:23:24

+0

@ user664303:2010a/20010b的32位版本使用VS 2005.我想他們使用的是64位版本。你很幸運。 :) – tr3w 2011-04-15 16:54:58