MinGW-w64 gcc compilier improperly linked with matlab libraries

39 ビュー (過去 30 日間)
Benjamin Spencer
Benjamin Spencer 2016 年 4 月 25 日
コメント済み: Brian Smigielski 2018 年 6 月 27 日
I am using the MinGW-64 compiler to attempt to compile some C code in Matlab using mex.
The following code works fine:
mex('-c', '-g', '-I../include', filenames)
however, the below code gives the following error
mex('-g', '-I../include', -output, 'MexFunction.c', filenames, 'ws2_32.lib')
Error using mex
gcc: error: ws2_32.lib: No such file or directory
ws2_32.lib is a matlab library on the matlab path and I would get the same error no matter what library I chose. If I add the lib path with -Lpath ie.
mex('-g', '-I../include', -output, 'MexFunction.c', filenames,...
'-LC:\Program Files\MATLAB\R2016a\sys\lcc64\lcc64\lib64', 'ws2_32.lib')
I get the same error. I believe a similar unanswered question has been posted here .
I am using Matlab 2016a, MinGW-w64 version 4.9.2, and Windows 10.

回答 (1 件)

Dave Behera
Dave Behera 2016 年 5 月 2 日
You need to specify the library name with 'l' option:
Also, it used gcc under the hood, so it may not be able to detect the file even if it is on the MATLAB path.
If it does not help, then use -v mode (verbose) to find the verbose output and paste it here.
  3 件のコメント
Brian Smigielski
Brian Smigielski 2018 年 6 月 27 日
Actually I was able to successfully compile. I did
mex -v '-LC:\Program Files\MATLAB\R2017b\sys\lcc64\lcc64\lib64' -lws2_32 open_socket_connection.cpp
and it worked! Use single quotes and make sure you include -lws2_32 so it knows which .lib file to use.

サインインしてコメントする。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by