2010-03-19 55 views
4

我想從Matlab與MySQL數據庫交互。
我發現一個mysql「庫」的matlab heremathworks相同。MySQL和Matlab

我按照指示編譯庫,編譯看起來很成功。最後我得到一個mex32文件。只有,第一頁上的說明指的是我需要使用的Dll(我猜應該生成一個Dll)。

我不熟悉mex編譯器或編譯Matlab的外部模塊。
我錯過了一些微不足道的東西嗎? Dll應該在哪裏?

謝謝。

回答

4

對dll的引用已過時。

在Windows上編譯mex函數時,將其編譯爲dll(不是.exe)。因此,編譯的mex函數用來擴展.dll。帶有.dll擴展名的Mex函數仍然有效,但有一個警告,這可能會在未來停止。

當64位Windows到達時,TheMathWorks需要一種方式讓人們能夠爲Win32和Win64編譯相同的mex函數,因此他們分別將擴展名更改爲.mexw32和.mexw64。顯然,他們沒有完全更新文檔。

+0

感謝您的澄清。 – Shaihi 2010-03-19 15:29:48

0

好的,這裏是我的問題的解決方案。
該編譯確實生成了一個mex32文件(32是因爲我在32位系統下編譯它)。您可以通過運行mexext來檢查編譯的輸出文件。顯然,mex32文件是C文件的編譯版本。
一旦我將該文件放置在Matlab工作路徑中的一個目錄中。

我想在我提供的鏈接中對Dll的引用不是過時就是錯誤。

+0

或者,文檔混淆和困惑 - mex文件是Windows系統上的DLL。 Matlab命令'mex'實際上只是一個包裝腳本,它調用編譯器並將正確的標誌和設置傳遞給它以創建DLL/mex文件 – 2010-03-19 13:38:00

4

我建議使用java連接MATLAB和MySQL(或任何其他數據庫,如果需要)。

java數據庫連接器設置簡單。我構建了一個簡單的java類來連接到數據庫 - 請參閱previous posting,以獲得一個簡單但工作正常的解決方案。

的MATLAB代碼工作指示

% include java class 
import Jam.ConnectToDatabase 

% set up database connection info 
userName='myName'; 
userPassword='myPassword'; 
databaseUrl='jdbc:mysql://glnd2818898.internal.net/2000'; 

% create java class instance and open connection to the database 
ctd = ConnectToDatabase; 
ctd.openConnection(userName, userPassword, databaseUrl) 

一旦連接是開放的話,我可以使用Java方法來提交SQL查詢,創建表,插入數據等之前,我從來沒有使用Java,但我下載Netbeans,我不在。

+0

+1,儘管這不是問題。由於我現在正在使用的工作方式,因此我不採用這種解決方案。它在數學論壇中的評分很高。 – Shaihi 2010-03-19 15:32:02

+1

非常感謝 - 雖然確實只有帶問號的直接攻擊是「dll應該在哪裏?」我正在把問題放在更高的層次上,並讓MATLAB與MySQL進行交互 - 實際上是問題的標題。過去在使用mex編譯器時遇到問題,那麼替代java解決方案就能解決mex問題。不過,我已經有了它,那很好。 – Adrian 2010-03-19 17:23:47