Code::Blocks Forums
User forums => Nightly builds => Topic started by: killerbot on April 16, 2006, 07:46:11 pm
-
No commits occured. Tomorrow's another day ;-)
-
Why I can't succeed compile for wxWidgets application .
-------------- Build: default in test ---------------
mingw32-g++.exe -pipe -mthreads -Winvalid-pch -include "wx_pch.h" -D__GNUWIN32__ -D__WXMSW__ -DWXUSINGDLL -DwxUSE_UNICODE -DUSE_PCH -IE:\TEST\test\include -IE:\TEST\test\lib\gcc_dll\mswu -IE:\TEST\test\contrib\include -I"C:\Program Files\CodeBlocks\include" -I"C:\Program Files\CodeBlocks\wxWidgetsDLL\include" -c wx_pch.h -o wx_pch.h.gch\default_wx_pch.h.gch
mingw32-g++.exe -pipe -mthreads -Winvalid-pch -include "wx_pch.h" -D__GNUWIN32__ -D__WXMSW__ -DWXUSINGDLL -DwxUSE_UNICODE -DUSE_PCH -IE:\TEST\test\include -IE:\TEST\test\lib\gcc_dll\mswu -IE:\TEST\test\contrib\include -I"C:\Program Files\CodeBlocks\include" -I"C:\Program Files\CodeBlocks\wxWidgetsDLL\include" -c main.cpp -o .objs\main.o
main.cpp:91:1: converting to execution character set: Illegal byte sequence
main.cpp:108:1: converting to execution character set: Illegal byte sequence
Process terminated with status 1 (0 minutes, 21 seconds)
2 errors, 0 warnings
my wxWidgets is compiled with unicode version.
main.cpp file:
#include <wx/wxprec.h>
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
//helper functions
enum wxbuildinfoformat {
short_f, long_f };
wxString wxbuildinfo(wxbuildinfoformat format)
{
wxString wxbuild(wxVERSION_STRING);
if (format == long_f )
{
#if defined(__WXMSW__)
wxbuild << _T("-Windows");
#elif defined(__UNIX__)
wxbuild << _T("-Linux");
#endif
#if wxUSE_UNICODE
wxbuild << _T("-unicode build");
#else
wxbuild << _T("-ANSI build");
#endif // wxUSE_UNICODE
}
return wxbuild;
}
//wxWidgets Application
class MyApp : public wxApp
{
public:
virtual bool OnInit();
};
IMPLEMENT_APP(MyApp);
class MyFrame: public wxFrame
{
public:
MyFrame(wxFrame *frame, const wxString& title);
~MyFrame();
private:
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
DECLARE_EVENT_TABLE();
};
bool MyApp::OnInit()
{
MyFrame* frame = new MyFrame(0L, _("wxWidgets Application Template"));
frame->Show();
return true;
}
int idMenuQuit = wxNewId();
int idMenuAbout = wxNewId();
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(idMenuQuit, MyFrame::OnQuit)
EVT_MENU(idMenuAbout, MyFrame::OnAbout)
END_EVENT_TABLE()
MyFrame::MyFrame(wxFrame *frame, const wxString& title)
: wxFrame(frame, -1, title)
{
#if wxUSE_MENUS
// create a menu bar
wxMenuBar* mbar = new wxMenuBar();
wxMenu* fileMenu = new wxMenu(_T(""));
fileMenu->Append(idMenuQuit, _("&Quit\tAlt-F4"), _("Quit the application"));
mbar->Append(fileMenu, _("&File"));
wxMenu* helpMenu = new wxMenu(_T(""));
helpMenu->Append(idMenuAbout, _("&About\tF1"), _("Show info about this application"));
mbar->Append(helpMenu, _("&Help"));
SetMenuBar(mbar);
#endif // wxUSE_MENUS
#if wxUSE_STATUSBAR
// create a status bar with some information about the used wxWidgets version
CreateStatusBar(2);
SetStatusText(_("Hello Code::Blocks user !王光平"),0);
SetStatusText(wxbuildinfo(short_f),1);
#endif // wxUSE_STATUSBAR
}
MyFrame::~MyFrame()
{
}
void MyFrame::OnQuit(wxCommandEvent& event)
{
Close();
}
void MyFrame::OnAbout(wxCommandEvent& event)
{
wxString msg = wxbuildinfo(long_f);
wxMessageBox(msg, _("Welcome 王光平"));
}
wx_pch.h file:
#ifndef WX_PCH_H_INCLUDED
#define WX_PCH_H_INCLUDED
#if ( defined(USE_PCH) && !defined(WX_PRECOMP) )
#define WX_PRECOMP
#endif // USE_PCH
// basic wxWidgets headers
#include <wx/wxprec.h>
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
#ifdef USE_PCH
// put here all your rarely-changing header files
#endif // USE_PCH
#endif // WX_PCH_H_INCLUDED
-
What version of Code::Blocks are you using? Are you using official RC2-installer final, are you using April 1st installer-RC2 Unicode, or are you using a nightly build ontop of either installer? Specify please!
-
Why I can't succeed compile for wxWidgets application .
main.cpp:91:1: converting to execution character set: Illegal byte sequence
main.cpp:108:1: converting to execution character set: Illegal byte sequence
That is because you have chinese characters (hanzis) on line 91 and 108. I don't know if GCC supports source files encoded in unicode (and if it supports, what type of encodings it supports), but certainly your actual configuration doesn't.
You can solve it in multiple ways, these are one of them:
1) Investigate if GCC supports unicode for source files, and if so, what encoding.
2) Use another compiler. For example, MSVC latest versions support UTF-8 and UTF-16 source files.
3) Don't use any unicode chars (use only ASCII chars) in your source files, and write all texts in plain english.
This is the most common way, and you will not loose unicode at all, because you can later translate the english texts to any language at runtime, using gettext catalogs. For creating the catalogs, here is a good GUI: http://www.poedit.org
Regards,
Takeshi Miya
-
What version of Code::Blocks are you using? Are you using official RC2-installer final, are you using April 1st installer-RC2 Unicode, or are you using a nightly build ontop of either installer? Specify please!
the code::blocks is The 16 april 2006 build.
-
Why I can't succeed compile for wxWidgets application .
main.cpp:91:1: converting to execution character set: Illegal byte sequence
main.cpp:108:1: converting to execution character set: Illegal byte sequence
That is because you have chinese characters (hanzis) on line 91 and 108. I don't know if GCC supports source files encoded in unicode (and if it supports, what type of encodings it supports), but certainly your actual configuration doesn't.
You can solve it in multiple ways, these are one of them:
1) Investigate if GCC supports unicode for source files, and if so, what encoding.
2) Use another compiler. For example, MSVC latest versions support UTF-8 and UTF-16 source files.
3) Don't use any unicode chars (use only ASCII chars) in your source files, and write all texts in plain english.
This is the most common way, and you will not loose unicode at all, because you can later translate the english texts to any language at runtime, using gettext catalogs. For creating the catalogs, here is a good GUI: http://www.poedit.org
Regards,
Takeshi Miya
thank you, Takeshi Miya
I think that GCC supports unicode for source files (with GCC3.4.5), because it is succeed compiled as follows:
#include <iostream>
using namespace std;
int ()
{
cout<<"中国"<<endl;
return 0;
}
-
Why I can't succeed compile for wxWidgets application .
main.cpp:91:1: converting to execution character set: Illegal byte sequence
main.cpp:108:1: converting to execution character set: Illegal byte sequence
That is because you have chinese characters (hanzis) on line 91 and 108. I don't know if GCC supports source files encoded in unicode (and if it supports, what type of encodings it supports), but certainly your actual configuration doesn't.
You can solve it in multiple ways, these are one of them:
1) Investigate if GCC supports unicode for source files, and if so, what encoding.
2) Use another compiler. For example, MSVC latest versions support UTF-8 and UTF-16 source files.
3) Don't use any unicode chars (use only ASCII chars) in your source files, and write all texts in plain english.
This is the most common way, and you will not loose unicode at all, because you can later translate the english texts to any language at runtime, using gettext catalogs. For creating the catalogs, here is a good GUI: http://www.poedit.org
Regards,
Takeshi Miya
thank you, Takeshi Miya
I think that GCC supports unicode for source files (with GCC3.4.5), because it is succeed compiled as follows:
#include <iostream>
using namespace std;
int ()
{
cout<<"中国"<<endl;
return 0;
}
Because I don't want Use another compiler. For example, MSVC, so I select code::blocks.
-
Why I can't succeed compile for wxWidgets application .
Thank you for being so kind as to not posting your general problems into this completely unrelated thread.
-
sorry for thomas.
I reply this question.
you need to select ANSI-mode, because you keyin word that it is local code (GB2312)and not UNICODE.
I try compling this file between ANSI-mode and UNICODE-mode, and it's sucess with ANSI-mode.
-
Where is our ANSI build?? The latest ANSI build is two weeks old! We need a new ANSI build for our Windows 9x friends! Of course, if a libunicows build is prepared instead, that is OK too....
-
I express ANSI-mode of wxwidgets lib. :D
-
this evening
-
I compling this file in ANSI-mode , and it's sucess with ANSI-mode.
I understand
thank you.