1樓:
寫的一個matlab程式,需要防copy軟體授權加密機制(基本都執行在windows平臺),找到了我讓我幫忙解決。因為不瞭解matlab語言,我的第一個想法就是使用外部介面的策略來做這方面的軟體授權驗證工作(既把授權軟體使用的加密演算法整合到外部介面程式中也就是其他高階語言編寫實現,以介面的形式來與matlab銜接),可在使用matlab與外部程式介面的時候發現matlab真的好糗(可能自己還沒發現matlab的真諦吧,不過說回來matlab的圖形效果真的很棒),以下是本人在使用matlab與外部程式介面載入呼叫時的詳細心得:
1.準備好c語言程式,清楚c語言的入口函式
2.編寫mexfunction函式。mexfunction函式為c語言與matlab語言的介面函式。
呼叫例項在mylinedetect.c檔案中.在matlab中呼叫mex指令編譯相關檔案,將c語言編譯為mex檔案。
3.編譯完成後,生成mylinedetect.mexw32或mylinedetect.mexw64檔案,此檔案即mex檔案,用於matlab與c語言介面函式.
4.編譯完成之後,編寫matlab函式,呼叫mex檔案。以mex檔案的形式呼叫編譯完成的c語言函式[o1,o2]=mylinedetect(double(x).
');......
5.輸出結果,上述linedetect函式完成影象中直線檢測功能,帶入matlab中呼叫後形成結果
2樓:monster方
1.準備好c語言程式,清楚c語言的入口函式
2.編寫mexfunction函式。mexfunction函式為c語言與matlab語言的介面函式。
呼叫例項在mylinedetect.c檔案中.在matlab中呼叫mex指令編譯相關檔案,將c語言編譯為mex檔案。
3.編譯完成後,生成mylinedetect.mexw32或mylinedetect.mexw64檔案,此檔案即mex檔案,用於matlab與c語言介面函式.
4.編譯完成之後,編寫matlab函式,呼叫mex檔案。以mex檔案的形式呼叫編譯完成的c語言函式[o1,o2]=mylinedetect(double(x).
');......
5.輸出結果,上述linedetect函式完成影象中直線檢測功能,帶入matlab中呼叫後形成結果。
用matlab如何與c++連線
3樓:天蠍神經俠侶
matlab 是當前應用最為廣泛的數學軟體,具有強大的數值計算、資料分析處理、系統 分析、圖形顯示甚至符號運算等功能[1]。利用這一完整的數學平臺,使用者可以快速實現十分 複雜的功能,極大地提高工程分析計算的效率[2][3]。但與其他高階程式[3]相比,matlab 程式 是一種解釋執行程式,不用編譯等預處理,程式執行速度較慢[4]。
c/c++語言是目前最為流行的高階程式設計語言之一[5]。它可對作業系統和應用程式以 及硬體進行直接操作,用c/c++語言明顯優於其它解釋型高階語言,一些大型應用軟體如 matlab 就是用c 語言開發的。
在工程實踐中,使用者經常遇到matlab 與c/c++混合程式設計的問題。本文基於matlab 6.5和vc6.
0 開發環境,在windows 平臺下就它們之間的混合程式設計問題進行深入研究並舉例說明。
2 matlab 呼叫c/c++
matlab 呼叫c/c++的方式主要有兩種:利用mex 技術和呼叫c/c++動態連線庫。
在matlab 與c/c++混合程式設計之前,必須先對matlab 的編譯應用程式mex 和編譯器mbuild進行正確的設定[1]:
對matlab 編譯應用程式mex 的設定:mex –setup.
對matlab 編譯器mbuild 的設定:mbuild –setup.
2.1 呼叫c/c++的mex 檔案
mex 是matlab executable 的縮寫,它是一種“可在matlab 中呼叫的c(或fortran)語 言衍生程式”[6]。mex 檔案的使用極為方便,其呼叫方式與matlab 的內建函式完全相同,只 需在matlab 命令提示符下鍵入mex 檔名即可。
一個c/c++的mex源程式通常包括4個組成部分,其中前3個是必須包含的內容,第4個則根據所實現的功能靈活選用:(1)#include “mex.h”;(2)mex檔案的入口函式mexfunction, mex檔案匯出名必須為mexfunction函式;(3)mxarray;(4)api函式
4樓:匿名使用者
連結編譯器(在這之前要安裝vs或vc++):在命令列輸入mex -setup回車
選擇編譯器就可以了
5樓:匿名使用者
編寫c++ mex介面檔案
怎麼在matlab中呼叫用c語言編寫的程式?
6樓:匿名使用者
1.準備好c語言程式,清楚c語言的入口函式
2.編寫mexfunction函式。mexfunction函式為c語言與matlab語言的介面函式。
呼叫例項在mylinedetect.c檔案中.在matlab中呼叫mex指令編譯相關檔案,將c語言編譯為mex檔案。
3.編譯完成後,生成mylinedetect.mexw32或mylinedetect.mexw64檔案,此檔案即mex檔案,用於matlab與c語言介面函式.
4.編譯完成之後,編寫matlab函式,呼叫mex檔案。以mex檔案的形式呼叫編譯完成的c語言函式[o1,o2]=mylinedetect(double(x).
');......
5.輸出結果,上述linedetect函式完成影象中直線檢測功能,帶入matlab中呼叫後形成結果。
7樓:農靖海
用標頭檔案
就行了檔名 first.h (宣告你需要實現的函式)f1();
f2();
檔名 first1.c
#include “first.h”
f1()
檔名 first2.c
#include “first.h”
f2()
檔名 main.c
#include “first.h”
main()
補充回答:出現lnk2001: unresolved external symbol "void __cdecl print(void)" (?
print@@yaxxz) 檢查下你的宣告,實現,和呼叫的函式名是否一致,一般是這個原因引起的
MATLAB中的兩個變數相乘怎麼編寫
楊好巨蟹座 驗證成功,可以執行 x rand 3,4 y rand 4,5 row1,col1 size x row2,col2 size y if col1 row2 disp input is error else result zeros row1,col2 for ii 1 row1 for...
matlab中如何呼叫自己編寫的函式
根據我的經驗 如果你的程式放在當前資料夾下面 指令碼檔案和自編函式在同一資料夾下 或者是matlab的預設搜尋路徑下,是可以直接被呼叫的。除此之外的函式呼叫就要用到乙個命令 增加matlab的函式庫搜尋命令,這樣的話,matlab在預設路徑搜尋完之後,就會去訪問使用者自定義的路徑。假設你的主程式.m...
matlab中如何讓自己編寫的程式變成原始檔程式
abc小東 在matlab中,你可以把原始檔 即.m檔案 放在非預設路徑的資料夾中,其呼叫的方法有三種 假設你的原始檔不在預設路徑內,而在matlab資料夾內,例如路徑為g practice matlab 1 在沒有開啟matlab軟體的情況下,你可以直接雙擊以上路徑內的.m檔案 已編譯 的圖示,然...