MATLAB MEX已成功完成,但未创建.mexw64文件

时间:2016-03-17 13:44:20

标签: c++ matlab mingw mex

尝试使用MATLAB中的MinGW 4.9.2编译器编译我的C ++文件时:

mex -largeArrayDims -O -output edtlicense LD=g++ LINKLIBS="$LINKLIBS -liphlpapi" edtlicense_mex.o edtlicense.o bigint.o ripemd128.o rsa.o getmac.o

我得到以下输出:

  

使用' MinGW64编译器(C)'进行构建。   MEX成功完成。

但是,未创建edtlicense.mexw64文件。

现在有人可能会导致这种情况以及如何解决这个问题吗?这是正常的:

  

使用' MinGW64编译器(C)'

构建

而不是

  

使用' MinGW64编译器(C ++)'

构建

编辑:

@Amro,这是运行命令的输出:

>> mex -largeArrayDims -cxx -v -n -output edtlicense edtlicense_mex.o edtlicense.o bigint.o ripemd128.o rsa.o getmac.o -liphlpapi

... Looking for compiler 'MinGW64 Compiler (C++)' ...
... Looking for environment variable 'MW_MINGW64_LOC' ...Yes ('C:\TDM-GCC-64').
... Looking for file 'C:\TDM-GCC-64\bin\g++.exe' ...Yes.
... Looking for folder 'C:\TDM-GCC-64\' ...Yes.

Found installed compiler 'MinGW64 Compiler (C++)'.

Set PATH = [...truncated...]
Set INCLUDE = C:\TDM-GCC-64\\include;
Set LIB = C:\TDM-GCC-64\\lib;;
Set MW_TARGET_ARCH = win64;
Set LIBPATH = C:\Program Files\MATLAB\R2015b\extern\lib\win64;

Error using mex
MEX cannot find library 'iphlpapi' specified with the -l option.
MEX looks for a file with one of the names:
 libiphlpapi.lib
 iphlpapi.lib
Please specify the path to this library with the -L option.

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

mex -largeArrayDims -output edtlicense
  edtlicense_mex.o edtlicense.o bigint.o ripemd128.o rsa.o getmac.o
  LINKLIBS="$LINKLIBS -liphlpapi -lws2_32"

(全部在一行中,我只是添加了换行符以便于阅读)。

在使用MinGW时,似乎直接指定要链接为mex ... -lfoo -lbar的库对于mex命令是有问题的...它甚至在调用编译器之前尝试查找foo.libbar.lib文件/ linker,在使用MinGW时可能并不总是可用(在上面的例子中,它是一个名为libiphlpapi.a的静态lib文件。)