在CodeBlocks中更改链接器顺序

3

我在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会按照自己的顺序添加参数,甚至重复库。
如何更改顺序?

2
看起来这是同一个问题: http://stackoverflow.com/questions/18600529/how-do-i-set-up-the-linking-order-in-code-blocks - Sandro
1个回答

0

多亏Sandro,我找到了答案

我使用的是CodeBlocks 13.12,要更改链接器参数,您必须转到菜单:

设置 -> 编译器 -> 选项卡:其他设置 -> 单击按钮:高级选项... -> 弹出一个警告消息框,单击:是 -> 在命令ComboBox中选择:链接对象文件以执行,并将其更改为:

$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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接