缺少网关功能-> Matlab 2018a->墨西哥

时间:2019-10-23 18:35:30

标签: matlab mex

我正在尝试从Matlab R2018a访问C ++代码,但出现错误

setpref('Internet','SMTP_Server', ip_address);
setpref('Internet','E_mail','name@address.com');
setpref('Internet','SMTP_Username','name@address.com');
setpref('Internet','SMTP_Password','');
props = java.lang.System.getProperties;
props.setProperty('mail.smtp.auth','true');
props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl.SSLSocketFactory');
props.remove('mail.smtp.socketFactory.class');
props.setProperty('mail.smtp.starttls.enable', 'true' );
props.setProperty('mail.smtp.socketFactory.port','100’);

我在Windows 7上使用VS2013和Matlab 2016做过类似的事情,并且一切正常。

该函数编译成功,并且按预期方式创建了dll,但是当我尝试运行它时,出现错误消息。

操作系统-> Windows 10

Matlab-> Matlab R2018a

C ++-> VS 2017

用VS2017编写的示例代码

文件名-> test.cpp

Invalid MEX-file 'C:\\C++ForMatlab\test.mexw64': Gateway function is
missing.

在Matlab中 我输入以下命令

 #include "mex.h"

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
    mexPrintf("Hello World!\n");
}

我得到的输出是

 mex test.cpp

但是之后,当我尝试通过键入

运行时
Building with 'Microsoft Visual C++ 2017'.
MEX completed successfully.

我收到以下错误消息

Trial>> test

1 个答案:

答案 0 :(得分:0)

生成文件“ThisModule.def”并添加以下几行。(将 templateSFunc 替换为您自己的文件名)

图书馆“templateSFunc.mexw64”
出口
mexFunction

然后到VS中的项目属性,将ThisModule.def添加到linker/Input/Module Definition File选项中。