wxSmith和Code :: Blocks构建错误

时间:2012-08-20 10:20:08

标签: c++ windows user-interface wxwidgets codeblocks

我最近开始在Code :: Blocks 10.05上使用wxSmith处理GUI,当我运行项目时,我还没有编写任何代码,只有OnClose函数,而且当我构建和运行我的项目时,我收到4个错误,cannot find -lwxmsw28d_corecannot find -lwxbase28dcannot find -lwxpngdcannot 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和用户定义的字段为空。

3 个答案:

答案 0 :(得分:0)

"不兼容"几乎可以肯定的是,该库是一个32位文件,您使用的是64位编译器。在库和从MinGW命令行构建期间生成的一个目标文件上运行file以确认这一点。

如果这是正确的,解决方案是将-m32选项添加到编译器/链接器命令行,如果它们确实默认生成64位代码。或者只是获得32位版本的编译器。

答案 1 :(得分:0)

看起来好像没有编译wxWidgets的正确调试版本。

查看你的... \ wxWidgets \ build \ msw文件夹,是否有像

这样的文件夹
  • gc_mwsud(unicode debug)
  • gc_mswuddll(unicode debug shared)

在您的情况下是一个文件夹

  • gcc_mswd(debug)
  • gcc_mswddll(debug shared)

修改

仅适用于您的特殊情况

转到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。

耐心。这一步需要时间。继续之前,请确保没有编译错误。

http://wiki.codeblocks.org/index.php?title=Compiling_wxWidgets_2.8.6_to_develop_Code::Blocks_%28MSW%29

答案 2 :(得分:0)

在创建一个新项目时,只需使用wxwidget DLL选项检查wxwidget构建为单片库的选项。 如果已经创建了项目,只需添加项目(属性)的链接器设置和编译器设置