更改 CodeBlocks 中的链接器顺序

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

我在 DialogBlocks 5.03 中有一个项目,可以使用 mingw32 正常编译,但使用 CodeBlocks 13.12 显示此错误:

F:\wxWidgets-3.0.0\lib\gcc_lib/libwxmsw30u_core.a(corelib_msw_listctrl.o):listctrl.cpp:(.text+0x1019): undefined reference to `ImageList_GetImageCount@4'
F:\wxWidgets-3.0.0\lib\gcc_lib/libwxmsw30u_core.a(corelib_msw_listctrl.o):listctrl.cpp:(.text+0x1063): undefined reference to `ImageList_Draw@24'
F:\wxWidgets-3.0.0\lib\gcc_lib/libwxmsw30u_core.a(corelib_msw_listctrl.o):listctrl.cpp:(.text+0x108c): undefined reference to `ImageList_GetIconSize@12'

我检测到这是库的链接器顺序,在 DialogBlocks 中这是库顺序:

-Wl,--subsystem,windows -mwindows -static-libgcc -static-libstdc++ -lwxmsw30u_xrc -lwxmsw30u_richtext -lwxmsw30u_aui -lwxmsw30u_html -lwxmsw30u_stc -lwxmsw30u_propgrid -lwxmsw30u_ribbon -lwxmsw30u_adv -lwxmsw30u_core -lwxbase30u -lwxbase30u_net -lwxbase30u_xml -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32

编译成功

在 CodeBlocks 中,这是编译器库顺序:

-mthreads -s -static-libgcc -static-libstdc++ -Wl,--subsystem,windows  -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lcomctl32 -lwsock32 -lodbc32 -lwxscintilla -lwxmsw30u_xrc -lwxmsw30u_richtext -lwxmsw30u_aui -lwxmsw30u_html -lwxmsw30u_stc -lwxmsw30u_propgrid -lwxmsw30u_ribbon -lwxmsw30u_adv -lwxmsw30u_core -lwxbase30u -lwxbase30u_net -lwxbase30u_xml -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -mwindows

如果我使用 DialogBlocks 链接器选项从命令行编译 CodeBlocks 项目,它会成功编译

因此,在 CodeBlocks 菜单中:项目 -> 构建选项 -> 链接器设置,我按照我想要的顺序添加库,但 CodeBlocks 按自己的顺序添加参数,甚至重复库

如何更改订单?

c++ c compiler-construction wxwidgets codeblocks
2个回答
1
投票

感谢桑德罗,我找到了答案

我有 CodeBlocks 13.12,要更改链接器参数,您必须进入菜单:

设置 -> 编译器 -> 选项卡:其他设置 -> 单击按钮:高级 选项... -> 它显示一个消息框警告,单击:是 -> 在 命令组合框选择:链接目标文件以执行和更改 这个:

$linker $libdirs -o $exe_output $link_objects $link_resobjects $link_options $libs -mwindows

至:

$linker $libdirs -o $exe_output $link_objects $link_resobjects $link_options

点击按钮:确定

然后进入菜单:

项目 -> 构建选项... -> 选项卡:链接器设置 -> 在:其他链接器 选项,我添加了我自己订购的库

enter image description here


0
投票

我不能同意上面的话题,因为它只是部分解决方案。我想最好在各个项目的各个编译器/链接器设置中设置库的顺序。 Code::Blocks 在项目设置中提供链接器选项的追加或前置顺序。

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