代码之家  ›  专栏  ›  技术社区  ›  Robert S. Barnes Antoni

使用MinGW[duplicate]交叉编译时,GetSaveFileName链接失败

  •  0
  • Robert S. Barnes Antoni  · 技术社区  · 6 年前

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

    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 回复  |  直到 6 年前
        1
  •  2
  •   Robert S. Barnes Antoni    6 年前

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

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

    但是,给出了链接错误

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