看标題别以為我是抄書,如<精通Matlab與c/c++混合程式設計設計 第二版>一書,畢竟網上已經一堆了,我實在不好意思做網頁的搬運工,當然解決過程還是有的,在文章尾部。
環境是matlab7和vc++6,老土是老土點了,能用就行。上文提到的書本作者,你出來,我保證不打你:P134結尾部分,提到"在Output file name 文本框中更改輸出檔案的擴充名,如果是32位系統則改為mexw32..."。我誠實的跟着你做失敗了。如果搜尋到本文的讀者按此書依樣畫葫蘆失敗了,不妨換個思路,不要盲目的在網上找文章,因為其他的環境未必适合你,而且我也不能拍胸脯保證我的能過。
首先,不得不承認,matlab有強大的文檔,也不得不承認我們很懶,懶到不相信文檔。當然可以說不會找。我展示下我怎麼搜尋到這個環境的搭建的。
沒猜錯,大家都是從編寫簡單的mexFunction開始的,這之前,會運作mex -setup來搭建編譯環境,然後在熟悉的vs環境下開發,最後在matlab指令框中用mex xxx.c的方式編譯mex源檔案。不知道大家有沒有注意,如果代碼有文法問題,matlab的出錯提示和vs的出錯提示相像,如果回過頭看看介紹手頭介紹c與matlab混合程式設計的書,上面會說mex編譯時用的就是setup時選擇的編譯器。先搜搜文檔上關于mex -setup的内容,結果如下:
該頁面的最下方有個連接配接跳轉到幫助文檔中所有關于mex檔案注意事項的入口處,其中提到了在windows下編譯mex的方法:
點選進入,開始是關于指令行工具搭建編譯環境,拖到最下面是IDE工具的搭建:
上面的步驟描述的很清楚,其中沒有要求修改輸出檔案名為.mexw32...
文檔上雖然描述了編譯的過程,但是沒有提到怎麼運作,我嘗試了幾次,把調用mex輸出檔案放在本文最後。
參考這個文檔總結出整個過程如下:
1.建立工程名為sums的空dll工程,源碼如下
#include "mex.h"
#include "matrix.h"
void mexFunction(int outArgc,mxArray* outArgv[],int inArgc,mxArray* inArgv[])
{
mexPrintf("sums\n");
}
2.設定連結庫和頭檔案 預定義宏
2.1)頭檔案路徑和預定義宏
2.2)連結庫及路徑:
3.建立并添加def檔案
LIBRARY sums.dll
EXPORTS mexFunction
動态庫的名字是sums.dll是以library名為sums.dll,mex檔案的調用入口函數是mexFunction。是以要導出這個函數。
4.設定mex檔案的調試工具,這個倒可以參考文章開頭提到的書