与MinGW交叉编译时,GetSaveFileName的链接失败

时间:2019-01-08 15:46:09

标签: mingw-w64

我正在尝试使用mingw在Ubuntu 18.04上编译UniLogger的修改版本。我收到以下链接错误:

undefined reference to '_imp__GetSaveFileNameW@4'

我发现this post on the MinGW mailing list说一个需要显式链接到comdlg32,所以我也尝试这样做:

i686-w64-mingw32-g++ -municode -o unilogger.exe -lcomdlg32 Source.cpp

但是仍然有同样的错误,发帖人也一样。他和我都验证了lib文件中该功能的存在:

nm /usr/i686-w64-mingw32/lib/libcomdlg32.a

libcomdlg32s00012.o:
00000000 b .bss
00000000 d .data
00000000 T _GetSaveFileNameW@4
         U __head_lib32_libcomdlg32_a
00000000 i .idata$4
00000000 i .idata$5
00000000 i .idata$6
00000000 i .idata$7
00000000 I __imp__GetSaveFileNameW@4
00000000 t .text

libcomdlg32s00011.o:
00000000 b .bss
00000000 d .data
00000000 T _GetSaveFileNameA@4
         U __head_lib32_libcomdlg32_a
00000000 i .idata$4
00000000 i .idata$5
00000000 i .idata$6
00000000 i .idata$7
00000000 I __imp__GetSaveFileNameA@4
00000000 t .text

我现在有点茫然。

1 个答案:

答案 0 :(得分:0)

好,找出问题所在-在命令行上争论的顺序:

i686-w64-mingw32-g++ -lcomdlg32 -municode -o unilogger.exe

给出链接错误,但是

i686-w64-mingw32-g++ -municode -o unilogger.exe -lcomdlg32

编译就好了。其实我认为我现在已经在使用gcc之前遇到了这个问题...