• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

LittleJoe

wxWidgets 2.8.9 não funciona em Visual C++ 2008 Express

17 mensagens neste tópico

Olá outra vez...

Marfig:

Instalei o wxWidgets 2.8.9 (wxMSW-2.8.9-Setup). tive problemas com o 'setup.h' (tive que o mudar de directório para poder fazer as compilações). Quando compilei um pequeno programa para criar uma janela muito simples, deu-me 33 erros.

O certo é que já houve quem me dissesse que o wxWidgets não funcionava no Visual C++ 2008 Express.

Será que o problema é a versão (2.8.9)? Ou fui eu que não fiz devidamente a instalação?

Gostaria muito que me respondesses...  :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quais são os erros?

Eu já tive o wxWidgets 2.8.8 a funcionar no Visual Studio 2008 por isso estou a achar estranho.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quais são os erros?

Eu já tive o wxWidgets 2.8.8 a funcionar o Visual Studio 2008 por isso estou a achar estranho.

Aqui estão a maior parte deles:

wxmsw28d_core.lib(app.obj) : error LNK2019: unresolved external symbol __imp__InitCommonControls@0 referenced in function "public: virtual bool __thiscall wxApp::Initialize(int &,char * *)" (?Initialize@wxApp@@UAE_NAAHPAPAD@Z)

wxmsw28d_core.lib(statbr95.obj) : error LNK2019: unresolved external symbol __imp__CreateStatusWindowA@16 referenced in function "public: bool __thiscall wxStatusBar::Create(class wxWindow *,int,long,class wxString const &)" (?Create@wxStatusBar@@QAE_NPAVwxWindow@@HJABVwxString@@@Z)

wxmsw28d_core.lib(spinbutt.obj) : error LNK2019: unresolved external symbol __imp__CreateUpDownControl@48 referenced in function "public: bool __thiscall wxSpinButton::Create(class wxWindow *,int,class wxPoint const &,class wxSize const &,long,class wxString const &)" (?Create@wxSpinButton@@QAE_NPAVwxWindow@@HABVwxPoint@@ABVwxSize@@JABVwxString@@@Z)

wxmsw28d_core.lib(listctrl.obj) : error LNK2019: unresolved external symbol __imp__ImageList_GetIconSize@12 referenced in function "bool __cdecl HandleSubItemPrepaint(struct tagNMLVCUSTOMDRAW *,struct HFONT__ *,int)" (?HandleSubItemPrepaint@@YA_NPAUtagNMLVCUSTOMDRAW@@PAUHFONT__@@H@Z)

wxmsw28d_core.lib(imaglist.obj) : error LNK2001: unresolved external symbol __imp__ImageList_GetIconSize@12

wxmsw28d_core.lib(listctrl.obj) : error LNK2019: unresolved external symbol __imp__ImageList_Draw@24 referenced in function "bool __cdecl HandleSubItemPrepaint(struct tagNMLVCUSTOMDRAW *,struct HFONT__ *,int)" (?HandleSubItemPrepaint@@YA_NPAUtagNMLVCUSTOMDRAW@@PAUHFONT__@@H@Z)

wxmsw28d_core.lib(imaglist.obj) : error LNK2001: unresolved external symbol __imp__ImageList_Draw@24

wxmsw28d_core.lib(listctrl.obj) : error LNK2019: unresolved external symbol __imp__ImageList_GetImageCount@4 referenced in function "bool __cdecl HandleSubItemPrepaint(struct tagNMLVCUSTOMDRAW *,struct HFONT__ *,int)" (?HandleSubItemPrepaint@@YA_NPAUtagNMLVCUSTOMDRAW@@PAUHFONT__@@H@Z)

wxmsw28d_core.lib(imaglist.obj) : error LNK2001: unresolved external symbol __imp__ImageList_GetImageCount@4

wxmsw28d_core.lib(imaglist.obj) : error LNK2019: unresolved external symbol __imp__ImageList_Create@20 referenced in function "public: bool __thiscall wxImageList::Create(int,int,bool,int)" (?Create@wxImageList@@QAE_NHH_NH@Z)

wxmsw28d_core.lib(dragimag.obj) : error LNK2001: unresolved external symbol __imp__ImageList_Create@20

wxmsw28d_core.lib(imaglist.obj) : error LNK2019: unresolved external symbol __imp__ImageList_Destroy@4 referenced in function "public: virtual __thiscall wxImageList::~wxImageList(void)" (??1wxImageList@@UAE@XZ)

wxmsw28d_core.lib(dragimag.obj) : error LNK2001: unresolved external symbol __imp__ImageList_Destroy@4

wxmsw28d_core.lib(imaglist.obj) : error LNK2019: unresolved external symbol __imp__ImageList_Add@12 referenced in function "public: int __thiscall wxImageList::Add(class wxBitmap const &,class wxBitmap const &)" (?Add@wxImageList@@QAEHABVwxBitmap@@0@Z)

wxmsw28d_core.lib(dragimag.obj) : error LNK2001: unresolved external symbol __imp__ImageList_Add@12

wxmsw28d_core.lib(imaglist.obj) : error LNK2019: unresolved external symbol __imp__ImageList_AddMasked@12 referenced in function "public: int __thiscall wxImageList::Add(class wxBitmap const &,class wxColour const &)" (?Add@wxImageList@@QAEHABVwxBitmap@@ABVwxColour@@@Z)

wxmsw28d_core.lib(imaglist.obj) : error LNK2019: unresolved external symbol __imp__ImageList_ReplaceIcon@12 referenced in function "public: int __thiscall wxImageList::Add(class wxIcon const &)" (?Add@wxImageList@@QAEHABVwxIcon@@@Z)

wxmsw28d_core.lib(dragimag.obj) : error LNK2001: unresolved external symbol __imp__ImageList_ReplaceIcon@12

wxmsw28d_core.lib(imaglist.obj) : error LNK2019: unresolved external symbol __imp__ImageList_Replace@16 referenced in function "public: bool __thiscall wxImageList::Replace(int,class wxBitmap const &,class wxBitmap const &)" (?Replace@wxImageList@@QAE_NHABVwxBitmap@@0@Z)

wxmsw28d_core.lib(imaglist.obj) : error LNK2019: unresolved external symbol __imp__ImageList_Remove@8 referenced in function "public: bool __thiscall wxImageList::Remove(int)" (?Remove@wxImageList@@QAE_NH@Z)

wxmsw28d_core.lib(imaglist.obj) : error LNK2019: unresolved external symbol __imp__ImageList_SetBkColor@8 referenced in function "public: bool __thiscall wxImageList::Draw(int,class wxDC &,int,int,int,bool)" (?Draw@wxImageList@@QAE_NHAAVwxDC@@HHH_N@Z)

wxmsw28d_core.lib(imaglist.obj) : error LNK2019: unresolved external symbol __imp__ImageList_GetIcon@12 referenced in function "public: class wxIcon __thiscall wxImageList::GetIcon(int)const " (?GetIcon@wxImageList@@QBE?AVwxIcon@@H@Z)

wxmsw28d_core.lib(dragimag.obj) : error LNK2019: unresolved external symbol __imp__ImageList_SetDragCursorImage@16 referenced in function "public: bool __thiscall wxDragImage::BeginDrag(class wxPoint const &,class wxWindow *,bool,class wxRect *)" (?BeginDrag@wxDragImage@@QAE_NABVwxPoint@@PAVwxWindow@@_NPAVwxRect@@@Z)

wxmsw28d_core.lib(dragimag.obj) : error LNK2019: unresolved external symbol __imp__ImageList_BeginDrag@16 referenced in function "public: bool __thiscall wxDragImage::BeginDrag(class wxPoint const &,class wxWindow *,bool,class wxRect *)" (?BeginDrag@wxDragImage@@QAE_NABVwxPoint@@PAVwxWindow@@_NPAVwxRect@@@Z)

wxmsw28d_core.lib(dragimag.obj) : error LNK2019: unresolved external symbol __imp__ImageList_EndDrag@0 referenced in function "public: bool __thiscall wxDragImage::EndDrag(void)" (?EndDrag@wxDragImage@@QAE_NXZ)

wxmsw28d_core.lib(dragimag.obj) : error LNK2019: unresolved external symbol __imp__ImageList_DragMove@8 referenced in function "public: bool __thiscall wxDragImage::Move(class wxPoint const &)" (?Move@wxDragImage@@QAE_NABVwxPoint@@@Z)

wxmsw28d_core.lib(dragimag.obj) : error LNK2019: unresolved external symbol __imp__ImageList_DragEnter@12 referenced in function "public: bool __thiscall wxDragImage::Show(void)" (?Show@wxDragImage@@QAE_NXZ)

wxmsw28d_core.lib(dragimag.obj) : error LNK2019: unresolved external symbol __imp__ImageList_DragLeave@4 referenced in function "public: bool __thiscall wxDragImage::Hide(void)" (?Hide@wxDragImage@@QAE_NXZ)

wxmsw28d_core.lib(uuid.obj) : error LNK2019: unresolved external symbol __imp__UuidToStringA@8 referenced in function "public: __thiscall Uuid::Uuid(class Uuid const &)" (??0Uuid@@QAE@ABV0@@Z)

wxmsw28d_core.lib(uuid.obj) : error LNK2019: unresolved external symbol __imp__RpcStringFreeA@4 referenced in function "public: __thiscall Uuid::~Uuid(void)" (??1Uuid@@QAE@XZ)

wxmsw28d_core.lib(uuid.obj) : error LNK2019: unresolved external symbol __imp__UuidCreate@4 referenced in function "public: void __thiscall Uuid::Create(void)" (?Create@Uuid@@QAEXXZ)

wxmsw28d_core.lib(uuid.obj) : error LNK2019: unresolved external symbol __imp__UuidFromStringA@8 referenced in function "public: bool __thiscall Uuid::Set(char const *)" (?Set@Uuid@@QAE_NPBD@Z)

Já agora, inatalaste o wxWidgets 2.8.8 a partir de um setup ou de uma pasta zip?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu já tive o wxWidgets 2.8.8 a funcionar o Visual Studio 2008 por isso estou a achar estranho.

No Express?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O certo é que já houve quem me dissesse que o wxWidgets não funcionava no Visual C++ 2008 Express.

Será que o problema é a versão (2.8.9)? Ou fui eu que não fiz devidamente a instalação?

Gostaria muito que me respondesses...  :confused:

Te garanto que qualquer versão do wxWidgets funciona no Visual Studio 2008 Express. Não sei quem te disse isso, mas não é correcto.

Entretanto, os erros têm a ver com libraries não estão a ser linkadas correctamente. Simbolos como __imp__InitCommonControls são definidos na comctl32.lib que faz parte de uma série de libraries que tens também de incluir no teu projecto.

No entanto também me preocupa-me o facto de dizeres que tiveste que mover o setup.h. Não o deves, nem podes fazer, Esse header é fundamental para o bom funcionamento com o wxWidgets. Existem dois headers com o mesmo nome e têm objectivos diferentes.

Sugiro que apagues o wxWidgets do teu sistema, o instales outra vez e depois sigas este tutorial passo-a-passo para compilares as libraries e criares o teu primeiro projecto: http://wiki.wxwidgets.org/Microsoft_Visual_C%2B%2B_Guide   

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Te garanto que qualquer versão do wxWidgets funciona no Visual Studio 2008 Express. Não sei quem te disse isso, mas não é correcto.

Entretanto, os erros têm a ver com libraries não estão a ser linkadas correctamente. Simbolos como __imp__InitCommonControls são definidos na comctl32.lib que faz parte de uma série de libraries que tens também de incluir no teu projecto.

No entanto também me preocupa-me o facto de dizeres que tiveste que mover o setup.h. Não o deves, nem podes fazer, Esse header é fundamental para o bom funcionamento com o wxWidgets. Existem dois headers com o mesmo nome e têm objectivos diferentes.

Sugiro que apagues o wxWidgets do teu sistema, o instales outra vez e depois sigas este tutorial passo-a-passo para compilares as libraries e criares o teu primeiro projecto: http://wiki.wxwidgets.org/Microsoft_Visual_C%2B%2B_Guide   

Não me lembro se foi no Express ou não, mas acho que sim.

Eu compilei o wxWidgets do código fonte em modo de static library, mas acho que isso não faz diferença.

Talvez ajude: http://wiki.wxwidgets.org/Visual_Studio_2008_(9.0)

Malta, obrigado pela ajuda.  :)

Acabei de entrar agora no blog. Esqueci-me de vos dizer uma coisa. Os exemplos e demos que vinham com o wxWidgets funcionavam na sua maioria. Será que é por estarem na pasta que foi instalada? Será que devo pôr os meus projectos nessa pasta?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desisto. Já fiz tudo o que vocês disseram para fazer, mas vai dar tudo ao mesmo. não estou aqui a pôr em causa o que vocês disseram, longe de mim tal coisa.

Se vocês dizem que o wxWidgets funciona no Visual C++ 2008 Express, é porque funciona mesmo. O problema talvez seja da antiguidade do meu portátil.

De qualquer maneira, descobri que há vida para além do wxWidgets. Vou voltar ao WinApi que apesar de tudo não precisa de tantas configurações.

Thanks.  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desisto. Já fiz tudo o que vocês disseram para fazer, mas vai dar tudo ao mesmo. não estou aqui a pôr em causa o que vocês disseram, longe de mim tal coisa.

Se vocês dizem que o wxWidgets funciona no Visual C++ 2008 Express, é porque funciona mesmo. O problema talvez seja da antiguidade do meu portátil.

De qualquer maneira, descobri que há vida para além do wxWidgets. Vou voltar ao WinApi que apesar de tudo não precisa de tantas configurações.

Não desistas, temos de por isso a funcionar. O problema ainda é o mesmo (erros de linking)?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois. Realmente seria uma pena desistires do wxWidgets. Sou um grande fã desta framework. Se quiseres, nós os dois (e mais quem se queira juntar) podemos ajudar-te a pôr isso a funcionar. É na realidade bastante simples.

Eu penso que o problema está na configuração do teu projecto. E quase que aposto que não estás a linkar a todas as libraries... não desistas e nós ajudamos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não desistas, temos de por isso a funcionar. O problema ainda é o mesmo (erros de linking)?

Pois. Realmente seria uma pena desistires do wxWidgets. Sou um grande fã desta framework. Se quiseres, nós os dois (e mais quem se queira juntar) podemos ajudar-te a pôr isso a funcionar. É na realidade bastante simples.

Eu penso que o problema está na configuração do teu projecto. E quase que aposto que não estás a linkar a todas as libraries... não desistas e nós ajudamos.

Eu não vou desistir em definitivo, apenas vou voltar ao WinApi e concluir o tutorial que estou a usar. Depois voltarei "à carga" com o wxWidgets outra vez.

Em relação ao problema, ainda são os mesmos erros de linking, mas agora vou voltar ao WinApi, quando voltar ao wxWidgets então darei um apitadela.  :)

Mais uma vez, Triton e Marfig,  obrigado.  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não desistas, temos de por isso a funcionar. O problema ainda é o mesmo (erros de linking)?

Pois. Realmente seria uma pena desistires do wxWidgets. Sou um grande fã desta framework. Se quiseres, nós os dois (e mais quem se queira juntar) podemos ajudar-te a pôr isso a funcionar. É na realidade bastante simples.

Eu penso que o problema está na configuração do teu projecto. E quase que aposto que não estás a linkar a todas as libraries... não desistas e nós ajudamos.

Olá, voltei mais uma vez!

Pois é... Disse que ia primeiro acabar o tutorial do WinApi, mas não resisti e atirei-me outra vez

ao wxWidgets antes de acabar o tutorial e finalmente CONSEGUI  :cheesygrin: resolver o problema.

Marfig e Tritton vocês tinham razão  :), afinal era era um problema de linkagem. O compilador não estava

a conseguir ler as livrarias (.lib) porque eu não lhes tinha definido o caminho.

Ao converter o sample 'internat' para outro directório, esqueci-me de alterar através do notepad

'.\..\..' para 'C:\wxWidgets-2.8.9' no .vcproj e mudar-lhe o nome.

Agora está a fazer a compilação e linkagem às mil maravilhas.

No entanto agora surgiu outro problema: Estou a ler um tutorial de wxWidgets, o 'The wxWidgets Programming Tutorial',

http://zetcode.com/tutorials/wxwidgetstutorial/ e não consigo colocar um ícone por mim definido no canto superior

esquerdo da janela da aplicação, apesar de usar o código fonte tal e qual como aparece no tutorial.

Qual é que será o problema? Será que este tutorial só serve pra Linux? Ou não estará adaptado ao wxWidgets 2.8.9?

Deverei uar uma versão anterior, por exemplo o wxWidgets 2.8.6?  :hmm:

Gostaria que me ajudassem a resolver este novo problema e que me indicassem outros tutoriais.

PS:

Aqui vai o código fonte do tutorial que não consigo pôr a funcionar:

icon.h

#include <wx/wx.h>

class Icon : public wxFrame
{
public:
    Icon(const wxString& title);
};

icon.cpp

#include "icon.h"

Icon::Icon(const wxString& title)
        : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(250, 150))
{
    SetIcon(wxIcon(wxT("web.xpm"))); // Substituí o "web.xpm" por um ícone por mim criado: "icon.xpm".
    Centre();
}

main.h

#include <wx/wx.h>

class MyApp : public wxApp
{
public:
    virtual bool OnInit();
};

main.cpp

#include "main.h"
#include "icon.h"

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit()
{
    Icon *icon = new Icon(wxT("Icon"));
    icon->Show(true);
    return true;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estive aqui a ler a documentação do wxWidgets:

http://docs.wxwidgets.org/2.8.9/wx_wxicon.html#wxicon

Under Windows, type defaults to wxBITMAP_TYPE_ICO_RESOURCE. Under X, type defaults to wxBITMAP_TYPE_XPM.

Será que é esse o problema? Podes tentar especificar que o tipo é wxBITMAP_TYPE_XPM. Ou talvez o melhor seja usares o formato ICO em Windows.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estive aqui a ler a documentação do wxWidgets:

http://docs.wxwidgets.org/2.8.9/wx_wxicon.html#wxicon

Será que é esse o problema? Podes tentar especificar que o tipo é wxBITMAP_TYPE_XPM. Ou talvez o melhor seja usares o formato ICO em Windows.

Ok. Já eatá resolvido. A solução é, como referiste, usar o formato ICO em Windows.  :)

Agora, uma outra questão: Ainda estou no ínicio deste tutorial http://zetcode.com/tutorials/wxwidgetstutorial/, até agora só houve este pequeno problema. Daqui pra frente, achas que poderei continuar a utilizar este tutorial no Windows? Caso contrário não me poderás recomendar outro?

Nota de moderação: O botão "Modificar" serve para... modificar. Evita double posting desnecessário :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não conheço bem wxWidgets, sempre que precisei de usar fui vendo alguns exemplos e adaptando ao meu caso.

Mas esse tutorial parece-me porreiro, não deves ter grandes problemas. Se tiveres diz, que o pessoal ajuda. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não conheço bem wxWidgets, sempre que precisei de usar fui vendo alguns exemplos e adaptando ao meu caso.

Mas esse tutorial parece-me porreiro, não deves ter grandes problemas. Se tiveres diz, que o pessoal ajuda. :)

Muchas Gracias!  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora