python调用MATLAB生成的dll(python调用matlab dll)

http://www.itjxue.com  2023-03-27 19:40  来源:未知  点击次数: 

怎样用python调用dll

可以的,python中一般有两种方法调用DLL中的函数。1.直接使用函数名,函数名可以用dependencywalker等工具查看。(这个工具在vc或者vs的工具包中)[python]viewplaincopyimportctypesdll=CTYPES.CDLL("test.dll")res=test(3,4)2.使用Ordinal,Ordinal可以用dependencywalker等工具查看。[python]viewplaincopyimportctypesdll=CTYPES.CDLL("test.dll")res=dll[1](3,4)

如何调用matlab生成的dll文件进行编程

通常在实现图像处理的算法时我们使用Matlab编程,因为它具有丰富的库函数以及操作方便,然而在工程项目中通常使用C/C++语言。如果我们将matlab代码完全重写成C++代码会很麻烦,最好的办法是借助matlab与C/C++接口将.m程序转成dll文件!

一、使用matlab将.m转成dll文件

1、在命令行中输入mex -setup

提示你是否要在本地安装matlab compilers,然后选择compiler类型,有matlab自带的编辑器以及检测到的其他编辑器,比如“Microsoft Visual C/C++ version 6.0 in E:\Program Files\Microsoft Visual Studio”,根据自己实际情况选择。

2、在命令行中输入mbuild -setup

这里的选项和上面类似,依次选择环境确定。

3、生成dll文件

一句命令mcc -W cpplib:add -T link:lib add.m

前面的add表示生成的dll文件名,后面的add.m顾名思义是.m文件名。生成后会多出8个文件,有用的是add.ctfadd.dll add.lib add.h4个文件,据说新版的Matlab不会生成.ctf文件。

二、VC6.0中调用生成的dll文件

上面生成的dll文件,我们可以借助VC6.0的Depends工具查看导出函数名,但是我们要调用导出函数必须要知道函数的形参返回类型等,这里要借助.h文件,它包含了导出函数的声明,下面以实例来讲解使用方法:

1、add.m文件

function [a,b]=add(x,y)

a=2*x+y;

b=3*y;

end

注意了add函数有两个返回值,可以猜测一下在C++中是如何处理的;

2、add.h文件

截取其中一段关键代码如下:

extern void add(int nargout, mwArray a, mwArray b

, const mwArray x, const mwArray y);

实际上函数的返回是变相的放到形参中的,依次是输出参数个数,输出参数,输入参数。PS 现在做的这个项目中用户自定义算法dll使用的规则和这里类似!

3、C++中调用dll文件

(1)新建空工程,将上面提及的4个文件放到工程目录下;

(2)VC++目录中包含目录:matlab 内的include目录

比如我的是 E:\MATLAB7\extern\include

(3)VC++目录中库目录:matlab 内的lib目录

E:\MATLAB7\extern\lib\win32\microsoft\msvc60,要根据VC++版本修改!

(4)工程属性-》连接-》输入-》附加依赖项

输入:add.lib mclmcrrt.lib mclmcr.lib,第一个是生成的。或者在预处理中加入下面代码

#pragma comment(lib, "mclmcrrt.lib")

#pragma comment(lib, "mclmcr.lib")

#pragma comment(lib, "add.lib")

4、C++代码

#include iostream

#include "add.h"

using namespace std;

int main()

{

if(!addInitialize())

{

cout"initilize failed!!!"endl;

return -1;

}

mwArray a(1,1,mxDOUBLE_CLASS);

mwArray b(1,1,mxDOUBLE_CLASS);

a(1,1)=20;

b(1,1)=30;

mwArray x(1,1,mxDOUBLE_CLASS);

mwArray y(1,1,mxDOUBLE_CLASS);

//输出参数个数,输出参数,输入参数。

add(2,x,y,a,b);

double *i=new double;

double *j=new double ;

x.GetData(i,1);

y.GetData(j,1);

cout"x="*i" y="*jendl;

getchar();

return 0;

}

注意:addInitialize()一定要!

怎么用python调用matlab程序代码阿

一、 用Matlab带的C语言接口,写一个C库,让它调用matlab代码

二、 用Python带的C语言借口,写一个C模块,让它调用Step 1中的C库

三、import Step 2中的模块,python就可以调用matlab的程序了。

这里还有直接调用可执行文件的方法python直接调matlab

如何用python调用matlab生成的dll文件?

function __construct($info=array()){

$this-host = $info['h'];

$this-name = $info['u'];

$this-pass = $info['pwd'];

$this-table = $info['dbname'];

$this-connect();

}

(责任编辑:IT教学网)

更多

推荐鼠标代码文章