VC中使用Matlab Engine出現"無法找到libeng.dll"的問題


VC中使用Matlab Engine出現"無法找到libeng.dll"的問題

本以為使這個原因

,其實不是我2了

#include "engine.h"

//終於知道為什嗎老是找不到那個庫文件--是因為添加的頭文件是以引號括起來的啊

//#include <engine.h>

不是因為環境變量沒有生效的緣故

其實目前來說應該是這個問題no compile tool is associated with the file extension? 因為編譯器窗口打開的是一個h文件,編譯器無法編譯,必須當前打開的是一個cpp文件,才能進行編譯,然后link就不會出現找不到庫文件的錯誤了

 

2010-08-31 12:24

我用的是Visual Studio 2008和Matlab R2009a,再次出現這個問題:
在VS的包含頭文件中已經加入:D:\Program Files\MATLAB\R2009a\extern\include\
在VS的包含庫文件中已經加入:D:\Program Files\MATLAB\R2009a\extern\lib\win32\microsoft\
在VS 的project 加入需要的D:\Program Files\MATLAB\R2009a\extern\lib\win32\microsoft\下各種庫文件*.lib.

編譯通過了,但是運行時后發現彈出:"無法找到libeng.dll",經過查找libeng.dll在D:\Program Files\MATLAB\R2009a\bin\win32\下,將D:\Program Files\MATLAB\R2009a\bin\win32\加入系統的Path路徑中,還是不行,后來考慮到修改Path需要重啟才可以,重啟以后果然可以了。

修改系統path需要重啟真是很麻煩,但是一直沒有找到好的辦法,網上的方法:
"

 

很多安裝程序在安裝完成后並不要求重啟Windows,而新的環境變量已經生效了,可見在不重啟Windows的情況下讓環境變量生效是完全可行的。

可我搜索如何不需重啟Windows讓環境變量生效的方法,只找到三類方案:

  1. 下載一個專門的軟件
  2. 編個小程序
  3. 修改注冊表

我既然是個懶得重啟Windows的人,難道我會不厭其煩按上述三種方法去做嗎?沒辦法,我只有自己摸索。最后找到一個非常簡單的在Windows下直接讓環境變量生效的辦法:

先到我的電腦>屬性>高級>環境變量,添加新環境變量或修改已有的環境變量,然后運行“DOS命令提示符”或run cmd,假設要修改PATH變量,不管PATH的原值是什么,在DOS窗口直接把PATH修改為任意值,關閉DOS窗口,這時,我的電腦>屬 性>高級>環境變量里PATH已經在Windows全局生效了。

不用擔心在DOS窗口的修改會影響我的電腦>屬性>高級>環境變量里的修改,DOS窗口的環境變量只是Windows環境變量的一個副本,副本的改動不會影響正本,但會觸發正本的刷新,這正是我想要的——讓環境變量生效。

附注:

不懂在DOS下修改環境變量?簡單得很,如要修改PATH,“SET PATH=C:\”,等號兩邊不要有空格。PATH環境變量最常用,專門有個DOS命令PATH,用來查看和修改PATH值,這里就不展開講PATH的語法了。

想驗證一下環境變量到底有沒有生效?簡單得很,新開一個DOS窗口,如要看PATH值,“ECHO %PATH%”。同上,PATH還可以用PATH命令來查看。

"
似乎不好使,有時間試試用軟件的方法

 

終於實現c#調用matlab函數(ZZ)

.net是微軟的發展方向,以后我們開發軟件的時候不免會調用一些matlab語言

今晚一直在***圖用c#調用matlab,終於成功。

主要思想就是首先把matlab的m函數做成com組件,然后在c#中應用此com組件,即可。

主要步驟如下:
1.建一個m文件(test.m)
例如:
function test(h,D)
for x=-10:0.1:10,
   if x>D
       y=h;
       hold on;
       plot(x,y)
   elseif x<-D
       y=-h;  
       hold on;
       plot(x,y)
   else
       y=h/(D*x);
       hold on;
       plot(x,y)
   end
end

2.在matlab中輸入comtool命令,就打開了matlab com builder,

點擊file-new project,新建一個工程,

在component name里輸入名字 點擊ok就行了。

然后點擊project–Add files,將test.m添加入工程,

然后點Build-Com Object,就會在comtest\distrib\文件夾下生成一個test1_0.dll(它就
是做好的com組件),

Build時matlab已經自動將此dll在注冊表中注冊

我們還需做一個准備工作,進入<matlabroot>/ bin/win32目錄下(matlabroot為你機器上
matlab安裝的路徑),打regsvr32 mwcomutil.dll ,即對mwcomutil.dll進行注冊(這個dll
是matlab下作的任何com組件都要用到的dll),下面 我們在其他編譯器下調用時就可以用了

3.c#下實現調用

     新建一個c#項目(我采用的是vs.net2003),選中右邊的解決方案資源管理器中的引用
,點鼠標右鍵,選添加引用,在彈出來的窗口中選com,然后也找到test_1_0 .dll,點選
擇,然后確定就可,此時此com組件也添加到工程里面去了,同樣我們可以選擇

然后編寫程序

     test.testclassClass st=new test.testclassClass();
             object m=1,n=2;
             st.test(m,n);
即可

然后在c#中就出現了我們所想得到的圖形,呵呵
原來在c#中實現調用matlab沒有我們所想象的困難呀,呵呵
希望大家有想法或者好的建議多多給出,

 

 


免責聲明!

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



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