配置環(huán)境:
vs2010+matlab2012b+win7 64位
說(shuō)明:
以安裝路徑“E:\Program Files\MATLAB\R2012b\”為例
MATLAB外部支持文件夾:
E:\Program Files\MATLAB\R2012b\extern
matlab自帶的c例程:
E:\Program Files\MATLAB\R2012b\extern\examples\eng_mat
engine.h的位置:
E:\Program Files\MATLAB\R2012b\extern\include
各種lib的位置:
E:\Program Files\MATLAB\R2012b\extern\lib\win64\microsoft
在matlab幫助中輸入“C language”即可找到有關(guān)MATLAB Engine的一個(gè)頁(yè)面。
從這個(gè)頁(yè)面開(kāi)始,學(xué)習(xí)各種關(guān)鍵詞,
就能夠找到一切你需要的資料。
使用MATLAB Engine一般用兩套函數(shù)就可以了。
1.engXXXX,關(guān)于Engine本身的操作,包括打開(kāi)/關(guān)閉,設(shè)置/取得變量,執(zhí)行語(yǔ)句等等。
2.mxXXXX,關(guān)于數(shù)據(jù)類型mxArray的操作,與MATLAB交互的左右類型全部為mxArray。
搭建過(guò)程:
1.先在VC6的tools->options->directories里添加相關(guān)目錄
include files:
E:\Program Files\MATLAB\R2012b\extern\include
E:\Program Files\MATLAB\R2012b\extern\include\win64
library files:
E:\Program Files\MATLAB\R2012b\extern\lib\win64\microsoft
2 點(diǎn)擊LInker input 將libmx.lib;libmex.lib;libeng.lib;加入到Additional Dependencies
或者用#pragma comment (lib, "libeng.lib")
#pragma comment (lib, "libmx.lib")
#pragma comment (lib, "libmex.lib") 語(yǔ)句
3 環(huán)境變量加上E:\Program Files\MATLAB\R2012b\bin\win64 否則編譯成功運(yùn)行時(shí)會(huì)顯示缺少 dll
4包含頭文件 engine.h
5這就可以去調(diào)用engine里的一些引擎函數(shù)了
做好這些后,如果我們環(huán)境一樣,
下面的代碼應(yīng)該能夠編通并且正常執(zhí)行,
其中包含了常用的一些函數(shù),
一般來(lái)說(shuō)使用Engine的時(shí)候也就用這些了。
出現(xiàn)問(wèn)題解決方法:
1 編譯出現(xiàn):
1>test.obj : error LNK2019: 無(wú)法解析的外部符號(hào) _engClose,該符號(hào)在函數(shù) _main 中被引用
1>test.obj : error LNK2019: 無(wú)法解析的外部符號(hào) _engSetVisible,該符號(hào)在函數(shù) _main 中被引用
1>test.obj : error LNK2019: 無(wú)法解析的外部符號(hào) _mxDestroyArray,該符號(hào)在函數(shù) _main 中被引用
1>test.obj : error LNK2019: 無(wú)法解析的外部符號(hào) _mxGetData,該符號(hào)在函數(shù) _main 中被引用
1>test.obj : error LNK2019: 無(wú)法解析的外部符號(hào) _mxGetDimensions_730,該符號(hào)在函數(shù) _main 中被引用
1>test.obj : error LNK2019: 無(wú)法解析的外部符號(hào) _mxGetNumberOfDimensions_730,該符號(hào)在函數(shù) _main 中被引用
1>test.obj : error LNK2019: 無(wú)法解析的外部符號(hào) _engGetVariable,該符號(hào)在函數(shù) _main 中被引用
1>test.obj : error LNK2019: 無(wú)法解析的外部符號(hào) _engEvalString,該符號(hào)在函數(shù) _main 中被引用
1>test.obj : error LNK2019: 無(wú)法解析的外部符號(hào) _engPutVariable,該符號(hào)在函數(shù) _main 中被引用
1>test.obj : error LNK2019: 無(wú)法解析的外部符號(hào) _mxGetPr,該符號(hào)在函數(shù) _main 中被引用
1>test.obj : error LNK2019: 無(wú)法解析的外部符號(hào) _mxCreateDoubleMatrix_730,該符號(hào)在函數(shù) _main 中被引用
1>test.obj : error LNK2019: 無(wú)法解析的外部符號(hào) _engOpen,該符號(hào)在函數(shù) _main 中被引用
1>D:\VSProjects\matlabtest\matlabtest\Debug\matlabtest.exe : fatal error LNK1120: 12 個(gè)無(wú)法解析的外部命令
這個(gè)問(wèn)題如果你按照上述配置好的話,這就很有可能出在兼容問(wèn)題上。因?yàn)?012b只提供64位版本,所有需要將vs工程變?yōu)?4位。點(diǎn)擊win32旁的下拉列表,選擇配置管理器。在活動(dòng)解決方案平臺(tái)這里選擇x64即可。重新編譯一切ok。
2 如果vs工程中還包含其他庫(kù)是32位的,那么只能裝matlab7 ,他只支持32位。而且matlab6.x版本又不支持vs2010.裝好以后,需要配置兼容性。然后點(diǎn)擊其桌面的快捷方式,修改其兼容性,我的系統(tǒng)是win7,改成了兼容vista,保存修改,點(diǎn)擊成功運(yùn)行。
|