Alpine linux 与 MinGW 交叉编译时 StringCchPrintfW 多重定义错误

问题描述 投票:0回答:1

我正在 Alpine linux for windows 上使用 MinGW 交叉编译 opencascade,并遇到了StringCchPrintfW多重定义链接错误。我已经成功地在 Ubuntu linux 上成功地交叉编译和链接,没有错误,但是我不确定如何在 Alpine 上调试它,任何想法将不胜感激?输出如下:

Compiling test.exe

x86_64-w64-mingw32-g++ -O2 obj/geom_util.o-mingw obj/main.o-mingw
obj/util.o-mingw obj/error.o-mingw obj/geom.o-mingw obj/mesh.o-mingw
obj/shapemap.o-mingw obj/export.o-mingw obj/import.o-mingw
obj/gobj.o-mingw -L/usr/local/lib/opencascade-mingw -lTKSTEP
-lTKSTEP209 -lTKSTEPAttr -lTKSTEPBase -lTKIGES -lTKSTL -lTKXSBase
-lTKMesh -lTKOffset -lTKFillet -lTKBool -lTKBO -lTKShHealing -lTKPrim
-lTKTopAlgo -lTKGeomAlgo -lTKBRep -lTKGeomBase -lTKG3d -lTKG2d
-lTKMath -lTKernel -o test.exe -s -lws2_32 -lpsapi -static -lpthread

/usr/lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld:
/usr/lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingwex.a(lib64_libmingwex_a-strsafe.o):strsafe.c:(.text+0xbe3):
multiple definition of `StringCchPrintfW';
/usr/local/lib/opencascade-mingw/libTKernel.a(OSD_FileNode.cxx.o):OSD_FileNode.c:(.text$StringCchPrintfW[StringCchPrintfW]+0x0):
first defined here

collect2: error: ld returned 1 exit status
make: *** [Makefile:146: test.exe] Error 1
mingw cross-compiling linker-errors alpine-linux
1个回答
2
投票

正如错误所述:

StringCchPrintfW
-lmingwex
中定义,然后在
OSD_FileNode.c
中重新定义。

您应该检查原因,看看是否可以从

OSD_FileNode.c
中删除该定义。

或者也许您可以使用链接器标志

-Wl,-allow-multiple-definition
忽略这一点以允许构建继续。

© www.soinside.com 2019 - 2024. All rights reserved.