我正在尝试从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
。
答案 0 :(得分:0)
生成文件“ThisModule.def”并添加以下几行。(将 templateSFunc 替换为您自己的文件名)
图书馆“templateSFunc.mexw64”
出口
mexFunction
然后到VS中的项目属性,将ThisModule.def添加到linker/Input/Module Definition File选项中。