1.要生成C++動態鏈接庫,在matlab命令窗口中輸入:
>> mcc -W cpplib:ColorHarris -T link:lib ColorHarris -d F:\zhangying\xieyulin\cfile\
結果出現:Depfun error: 'Unable to locate ColorHarris as a function on the MATLAB path'
原因:當前編譯路徑沒有修改,錯誤已經提示了,將當前matlab路徑改到你這個m文件所在的路徑下,(點擊運行按鈕會出現 change directory,選擇即可)再進行編譯!
2.在VS2010中執行到:
if( !ColorHarrisInitialize())
{
std::cout << "Could not initialize ColorHarris!" << std::endl;
}
時出現:cannot open CTF archive file
'c:\document~1\jiao\local~1\Temp\mathworks_tem_2696_2808'
or
'c:\document~1\jiao\local~1\Temp\mathworks_tem_2696_2808.zip'
這個問題查了很長時間也沒查出來解決方法,后來新建了工程,重新添加文件,結果突然沒這個問題了。。就這么不了了之。。。
參考博客: http://blog.sina.com.cn/s/blog_4fc6546101011cu5.html
3.將matlab的m文件用mcc生成.h .lib .dll 文件后拷貝到VS2010項目根目錄中,結果運行時提示編譯的應用程序或DLL為無效的windows映像。
分析:查了很長時間,覺得應該是拷貝的過程中損壞了dll文件
解決:在編譯時就將生成文件的所在目錄指定為VS2010項目根目錄,保留.h .lib .dll 文件,再將其他文件項刪除即可。為了保險,用mcc -c 生成ctf文件也放在根目錄下,運行通過。
4.在VS2010調用matlab文件時,提示 Undefinedfunction “myfun1” for input arguments of type 'double'.
分析:myfun1與調用的matlab主函數不在同一個文件夾里,在matlab中運行時不會出現找不到函數的問題(還是覺得matlab很智能啊)。但VS2010找不到放在另一個文件夾里的函數,是路徑的問題。
解決:將myfun1.m拷貝到調用的matlab主函數同一個路徑下(放在同一個文件夾里),運行通過。