我最近开始在Code :: Blocks 10.05上使用wxSmith处理GUI,当我运行项目时,我还没有编写任何代码,只有OnClose函数,而且当我构建和运行我的项目时,我收到4个错误,cannot find -lwxmsw28d_core
,cannot find -lwxbase28d
,cannot find -lwxpngd
和cannot find -lwxzlibd
。
构建日志是:
-------------- Build: Debug in gui-test ---------------
Compiling: gui_testMain.cpp
Linking executable: bin\Debug\gui-test.exe
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxmsw28d_core.a when searching for -lwxmsw28d_core
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib\libwxmsw28d_core.a when searching for -lwxmsw28d_core
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxmsw28d_core.a when searching for -lwxmsw28d_core
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lwxmsw28d_core
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxbase28d.a when searching for -lwxbase28d
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib\libwxbase28d.a when searching for -lwxbase28d
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxbase28d.a when searching for -lwxbase28d
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lwxbase28d
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxpngd.a when searching for -lwxpngd
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib\libwxpngd.a when searching for -lwxpngd
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxpngd.a when searching for -lwxpngd
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lwxpngd
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxzlibd.a when searching for -lwxzlibd
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib\libwxzlibd.a when searching for -lwxzlibd
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib/libwxzlibd.a when searching for -lwxzlibd
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lwxzlibd
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 1 seconds)
4 errors, 0 warnings
什么可以给我错误? 我在Windows上使用Code :: Blocks。我正在做这个链接正在做的教程wxSmith Tutorial - Code::Blocks Wiki
注意:如果有帮助,我从wxPack安装了wxWidgets,在Code :: Blocks中,我使用全局变量编辑器创建了一个全局变量,其中基本字段为C:\SourceCode\Libraries\wxWidgets2.8
,包含字段为{{1 }和lib字段有C:\SourceCode\Libraries\wxWidgets2.8\include
。其余字段为空,如obj(我找不到obj文件夹),cflags,lflags和用户定义的字段为空。
答案 0 :(得分:0)
"不兼容"几乎可以肯定的是,该库是一个32位文件,您使用的是64位编译器。在库和从MinGW命令行构建期间生成的一个目标文件上运行file
以确认这一点。
如果这是正确的,解决方案是将-m32
选项添加到编译器/链接器命令行,如果它们确实默认生成64位代码。或者只是获得32位版本的编译器。
答案 1 :(得分:0)
看起来好像没有编译wxWidgets的正确调试版本。
查看你的... \ wxWidgets \ build \ msw文件夹,是否有像
这样的文件夹在您的情况下是一个文件夹
修改强>
仅适用于您的特殊情况
转到x:\ wxWidgets \ build \ msw \ (x ==您的驱动器)
更改您的x:\ wxWidgets \ build \ msw \ config.gcc,如
....
# C compiler
CC = gcc
# C++ compiler
CXX = g++
....
# What type of library to build? [0,1]
SHARED = 0
....
# Compile Unicode build of wxWidgets? [0,1]
UNICODE = 0
....
# Type of compiled binaries [debug,release]
BUILD ?= debug
....
# Multiple libraries or single huge monolithic one? [0,1]
MONOLITHIC = 0
使用命令制作。仅适用于您的特殊情况!!
x:\ wxWidgets \ build \ msw> mingw32-make -f makefile.gcc
官方支持的Code :: Blocks的正常方式是
清理来源:
mingw32-make -f makefile.gcc MONOLITHIC = 1 SHARED = 1 UNICODE = 1 BUILD = debug clean
注意:确保为此步骤和下面的构建步骤使用完全相同的选项。 clean目标使用这些变量,仅清除生成的对象和库文件的指定版本。 (如果这些变量不相同,它将不会清理目标文件。)
注意:如果在清理后仍然遇到编译问题,可以尝试手动删除build \ msw目录下的gcc_mswd目录。该目录是存储目标文件的位置。
当一切都很干净时,你可以开始编译wxWidgets:
mingw32-make -f makefile.gcc MONOLITHIC = 1 SHARED = 1 UNICODE = 1 BUILD = debug
注意:这些选项是官方支持的Code :: Blocks选项。如果你想要另一个版本的wxWidgets(调试或非Unicode),你仍然需要确保你构建一个MONOLITHIC版本(一个大的DLL)来链接Code :: Blocks。
耐心。这一步需要时间。继续之前,请确保没有编译错误。
答案 2 :(得分:0)
在创建一个新项目时,只需使用wxwidget DLL选项检查wxwidget构建为单片库的选项。 如果已经创建了项目,只需添加项目(属性)的链接器设置和编译器设置