MinGW-w64 gcc compilier improperly linked with matlab libraries

23 ビュー (過去 30 日間)
Benjamin Spencer
Benjamin Spencer 2016 年 4 月 25 日
コメント済み: Abdulrahman 2023 年 2 月 14 日
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.
  4 件のコメント
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.
Abdulrahman
Abdulrahman 2023 年 2 月 14 日
>> mex Your_C_code.c "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\WS2_32.Lib"

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

Community Treasure Hunt

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

Start Hunting!

Translated by