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
首先把這個(gè)函數(shù)編譯成C++接口的DLL。為此,我們需要先設(shè)置MATLAB編譯器。具體做法是在MATLAB命令行執(zhí)行“mbuild
-setup”。然后用下面這行命令把myadd2函數(shù)編譯成一個(gè)C++接口的DLL:
二、
mcc -W cpplib:libmyadd2 -T link:lib myadd2
-C
不加 -C 不會(huì)生成
結(jié)果,我們將會(huì)得到包含libmyadd2.dll,libmyadd2.ctf,libmyadd2.h,libmyadd2.lib等在內(nèi)的一些文件。接下來(lái)我們只需要這四個(gè)文件。
三、
創(chuàng)建一個(gè)Win32 Console的VC++工程,把以上四個(gè)文件拷貝到VC++工程的源代碼所在目錄。
接下來(lái)設(shè)置VC++,讓它能找到MATLAB接口函數(shù)的定義及連接庫(kù)函數(shù)??梢杂袃煞N設(shè)置方式:一種是改VC++6.0中關(guān)于VC++的設(shè)置,這樣的好處是每個(gè)新的工程都能自動(dòng)獲得這個(gè)設(shè)定;而另一種是只改當(dāng)前工程的設(shè)置,也就是設(shè)置只對(duì)該工程有效。這里用后一種方式。
進(jìn)行項(xiàng)目必要的設(shè)置(注意這里和VC2005有較大不同,與matlab2010也不同)。vc主界面進(jìn)入project>Settings,點(diǎn)C/C++選項(xiàng)卡,Category選擇Preprocessor,
Additional
C:\Program Files\MATLAB\R2009a\extern\include
點(diǎn)“l(fā)ink”選項(xiàng)卡,Category選擇General,在下面的Object/library modules
那欄的最后添加
libmyadd2.lib mclmcrrt.lib
兩個(gè)庫(kù)之間以及和其他庫(kù)以空格隔開(kāi)。
然后Category選擇input, Additional
C:\Program
Files\MATLAB\R2009a\extern\lib\win32\microsoft
如圖
在VCcpp文件中
#include "stdafx.h"后添加
return 0上面添加
std::cout << "Hello world!"
<< std::endl;
點(diǎn)擊編譯、運(yùn)行即可。
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ù)改為:
可以了
|
|