尝试使用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.
答案 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.lib
和bar.lib
文件/ linker,在使用MinGW时可能并不总是可用(在上面的例子中,它是一个名为libiphlpapi.a
的静态lib文件。)