Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ wxSmith和代码::块生成错误_C++_Windows_User Interface_Wxwidgets_Codeblocks - Fatal编程技术网

C++ wxSmith和代码::块生成错误

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

我最近开始使用wxSmith on Code::Blocks 10.05在GUI上工作,当我运行项目时,我还没有编写任何代码,只有OnClose函数,当我构建和运行项目时,我遇到4个错误,找不到-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(调试共享)
编辑

仅适用于您的特殊情况

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

官方支持的代码::块的正常方式是

清理源头:

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_库编译。看看我的编辑