http://www./thread-10041-1-1.html http://www./thread-545-1-1.html
一、
matlab下m文件
function [y,z] = myadd2(a, b)
% dummy function, just to demonstrate the idea
y = a+b;
z = a+2*b;
end
首先把這個函數(shù)編譯成C++接口的DLL。為此,我們需要先設(shè)置MATLAB編譯器。具體做法是在MATLAB命令行執(zhí)行“mbuild
-setup”。然后用下面這行命令把myadd2函數(shù)編譯成一個C++接口的DLL:
二、
mcc -W cpplib:libmyadd2 -T link:lib myadd2
-C
不加 -C 不會生成
結(jié)果,我們將會得到包含libmyadd2.dll,libmyadd2.ctf,libmyadd2.h,libmyadd2.lib等在內(nèi)的一些文件。接下來我們只需要這四個文件。
三、
創(chuàng)建一個Win32 Console的VC++工程,把以上四個文件拷貝到VC++工程的源代碼所在目錄。
接下來設(shè)置VC++,讓它能找到MATLAB接口函數(shù)的定義及連接庫函數(shù)??梢杂袃煞N設(shè)置方式:一種是改VC++6.0中關(guān)于VC++的設(shè)置,這樣的好處是每個新的工程都能自動獲得這個設(shè)定;而另一種是只改當(dāng)前工程的設(shè)置,也就是設(shè)置只對該工程有效。這里用后一種方式。
進行項目必要的設(shè)置(注意這里和VC2005有較大不同,與matlab2010也不同)。vc主界面進入project>Settings,點C/C++選項卡,Category選擇Preprocessor,
Additional
C:\Program Files\MATLAB\R2009a\extern\include
點“l(fā)ink”選項卡,Category選擇General,在下面的Object/library modules
那欄的最后添加
libmyadd2.lib mclmcrrt.lib
兩個庫之間以及和其他庫以空格隔開。
然后Category選擇input, Additional
C:\Program
Files\MATLAB\R2009a\extern\lib\win32\microsoft
如圖
在VCcpp文件中
#include "stdafx.h"后添加
return 0上面添加
std::cout << "Hello world!"
<< std::endl;
點擊編譯、運行即可。
function [y,z] = myadd2(a, b)
% dummy function, just to demonstrate the idea
y = a+b;
z = a+2*b;
x1=0:0.1:10;
y1=sin(x1);
plot(x1,y1);
msgbox('hello world!');
end
其他不變,再生成dll文件等加載到VC中,其他不變,看一下效果
在main()函數(shù)中加一句
system("pause"); //暫停作用
//////////////////////////////////////////////
也可將m文件改為:
function [y,z] = myadd2(a, b,c)
% dummy function, just to demonstrate the idea
y = a+b;
z = a+2*b;
x1=0:0.1:c;
y1=sin(x1);
plot(x1,y1);
msgbox('hello world!');
end
c(1,1)=5;
將調(diào)用函數(shù)改為:
可以了
|
|