C++ wxSmith和代码::块生成错误
我最近开始使用wxSmith on Code::Blocks 10.05在GUI上工作,当我运行项目时,我还没有编写任何代码,只有OnClose函数,当我构建和运行项目时,我遇到4个错误,C++ wxSmith和代码::块生成错误,c++,windows,user-interface,wxwidgets,codeblocks,C++,Windows,User Interface,Wxwidgets,Codeblocks,我最近开始使用wxSmith on Code::Blocks 10.05在GUI上工作,当我运行项目时,我还没有编写任何代码,只有OnClose函数,当我构建和运行项目时,我遇到4个错误,找不到-lwxmsw28d_core,找不到-lwxbase28d,找不到-lwxpngd,并且找不到-lwxzlibd。 生成日志为: -------------- Build: Debug in gui-test --------------- Compiling: gui_testMain.cpp Li
找不到-lwxmsw28d_core
,找不到-lwxbase28d
,找不到-lwxpngd
,并且找不到-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上使用代码::块。作为一个教程,我正在做这个链接的工作
注意:如果有帮助,我从wxPack安装了wxWidgets,在Code::Blocks中,我使用全局变量编辑器创建了一个全局变量,其中基本字段为C:\SourceCode\Libraries\wxWidgets2.8
,包含字段为C:\SourceCode\Libraries\wxWidgets2.8\include
,并且lib字段具有C:\SourceCode\Libraries\wxWidgets2.8\lib
。其余的字段都是空的,比如obj(我找不到obj文件夹)、cflags、lflags和用户定义的字段都是空的。几乎可以肯定,“不兼容”意味着库是一个32位文件,您使用的是64位编译器。从MinGW命令行在库和生成期间生成的一个对象文件上运行file
,以确认这一点
如果这是正确的,那么解决方案是在编译器/链接器命令行中添加
-m32
选项,如果它们在默认情况下确实生成64位代码。或者可能只是得到一个32位版本的编译器。看起来好像没有编译wxWidgets的正确调试版本
看看你的…\wxWidgets\build\msw文件夹,有这样的文件夹吗
- gc_mwsud(unicode调试)
- gc_mswudll(unicode调试共享)
- gcc_mswd(调试)
- gcc_mswddll(调试共享)
....
# 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
官方支持的代码::块的正常方式是
清理源头:
mingw32 make-f makefile.gcc单片=1 SHARED=1 UNICODE=1 BUILD=debug clean
注意:确保此步骤和下面的构建步骤使用完全相同的选项。clean目标使用这些变量,并且只清理生成的对象和库文件的指定版本。(如果这些变量不相同,它将不会清理目标文件。)
注意:如果清理后仍存在编译问题,可以尝试手动删除build\msw目录下的gcc\u mswd目录。此目录是存储对象文件的位置
一切正常后,您可以开始编译wxWidgets:
mingw32 make-f makefile.gcc单片=1共享=1 UNICODE=1构建=调试
注意:这些选项是官方支持的Code::Blocks选项。如果您想要wxWidgets的另一个版本(调试或非Unicode),您仍然必须确保为链接Code::Blocks构建一个单片版本(一个大DLL)
耐心。这一步需要时间。继续之前,请确保没有编译错误
在创建新项目时,只需选中以下选项,即使用wxwidget DLL选项将wxwidget构建为单片库。!
如果已经创建了项目,只需添加项目的链接器设置和编译器设置(属性)您是在64位计算机上安装了32位版本,还是以其他方式安装了32位版本?我在64位Windows上,wxPack中没有32位或64位版本,只有1个文件如何运行
文件
,MinGW命令行与命令提示符不同吗?我认为您应该有一个通过MinGW/MSYS安装来安装bash的快捷方式。文件应该是可用的,即“文件的文件名”。好的,我可以打开MinGW命令行,但您所说的是指在构建过程中生成的库文件和一个对象文件?我对整个bash命令和MinGW有点陌生。不,我仅有的文件夹是:“vc_mswddll”、“vc_mswdll”、“vc_mswudll”和“vc_mswudll”,你必须用debug为gcc_库编译。看看我的编辑