VS2010與matlab R2011b混合編程遇到問題及解決


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主函數同一個路徑下(放在同一個文件夾里),運行通過。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM