Newsgroup: it.comp.programmare.win32
Titolo: WxWindows e ODBC [help!]

Qualcuno di voi usa le wxWindows?
Devo realizzare un piccolo programma che attraverso le wx mi permetta di
accedere ad un database tramite odbc (usando visual studio 6.0). Sono alle
prime armi sia con visual studio e odbc.
Ho incluso le wx.h come vedete sotto.
//------------------------ 
#include <wx/wxprec.h>
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
// Include your minimal set of headers here, or wx.h
#include <wx/wx.h>
#endif
#include <wx/db.h>
//---------------------- 
Poi devo stabilire la connessione con il database (ne ho creato uno in
access di nome "db1") e ho creato un dsn utente di nome "database1" che fa
riferimento al database creato.
Per stabilire la connessione scrivo il seguente codice:
//--------------- 
int main()
{
wxDbConnectInf DbConnectInf;
DbConnectInf.SetDsn("database1");
DbConnectInf.SetUserID("tommi");
DbConnectInf.SetPassword("tommi");
DbConnectInf.SetDefaultDir("d:/Università/mi distribuiti/db1.mdb");
return 0;
}
//-------------- 
In fase di linking mi da i seguenti errori, sapete come risolverli? Sbaglio
in qualche punto? Devo inserire qualche libreria particolare?  Grazie e
ciao!
data.obj : error LNK2001: unresolved external symbol "public: __thiscall
wxDbConnectInf::~wxDbConnectInf(void)" (??1wxDbConnectInf@@QAE@XZ)
data.obj : error LNK2001: unresolved external symbol "public: void
__thiscall wxDbConnectInf::SetPassword(class wxString const &"
(?SetPassword@wxDbConnectInf@@QAEXABVwxString@@@Z)
data.obj : error LNK2001: unresolved external symbol "public: void
__thiscall wxDbConnectInf::SetUserID(class wxString const &"
(?SetUserID@wxDbConnectInf@@QAEXABVwxString@@@Z)
data.obj : error LNK2001: unresolved external symbol "public: void
__thiscall wxDbConnectInf::SetDsn(class wxString const &"
(?SetDsn@wxDbConnectInf@@QAEXABVwxString@@@Z)
data.obj : error LNK2001: unresolved external symbol "public: __thiscall
wxDbConnectInf::wxDbConnectInf(void)" (??0wxDbConnectInf@@QAE@XZ)
data.obj : error LNK2001: unresolved external symbol "public: class wxString
& __thiscall wxString::operator=(class wxString const &"
(??4wxString@@QAEAAV0@ABV0@@Z)
data.obj : error LNK2001: unresolved external symbol "private: void
__thiscall wxString::InitWith(char const *,unsigned int,unsigned int)"
(?InitWith@wxString@@AAEXPBDII@Z)
Debug/data.exe : fatal error LNK1120: 7 unresolved externals

 Debug/data.exe : fatal error LNK1120: 7 unresolved externals
Prima di tutto per usare wxWindows (wxWidgets)  devi creare la classe wxApp
per gestire la tua applicazione.Da questi  errori mi sembra di capire che
non hai neppure incluso le librerie e i path delle nel setting del tuo
progetto e compilatore.Dopo di questo devi anche controllare nel file
setup.h di wxWindows che sia abilitato ODBC
ciao :)
--
------------------------
http://visualwx.altervista.org/
nuova release 0.77g [freeware]
VisualWx rad per c++,python,perl,lua e wxwindows

Un ragazzo mi ha detto di inserire lel "wxmsw.lib" ma non riesco a
trovarle...non intenderà le "wxmswd.lib"?
Comunque mettendo le wxmswd.lib mi da vari altri errori tipo questi ma anche
altri:
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _malloc already defined in
LIBCD.lib(dbgheap.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _realloc already defined in
LIBCD.lib(dbgheap.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _free already defined in
LIBCD.lib(dbgheap.obj)
All'inizio quando inclusi le wx.h non mi trovava setup.h che ho copiato
dalla cartella "msw" (sviluppo sotto windows) e messo nella cartella
principale, è corretto?
Il file setup.h va scelto in base al sistema operativo che usiamo, no?
Ho settato inoltre in setup.h
#define wxUSE_ODBC 1
(era a 0)
P.S. ce l'hai un piccolo script da passarmi per vedere se mi funziona, se mi
funziona il problema è sulle librerie e magari non sul codice
Ciao e grazie!

 funziona il problema è sulle librerie e magari non sul codice
1)  non serve copiare il file setup.h in quanto lo fa il make durante la
compilazione
2) se non era definito a 1 devi ricompilare tutta la libreria
3) cancella il setup.h copiato e cambia quello originale (wxUSE_ODBC 1)
4) per un progetto con il setting giusto  usane uno di quelli dei samples
Ricorda di settare i path nelle opzioni del compilatore


Il problema credo sia la modalità di linking. Prova a dire al VC++ di usare
le librerie linkandole staticamente o dinamicamente (inverti quello che c'è
già).
--- bye


Ti chiedo per il momento solo una cosa, per non mettere troppa carne sul
fuoco :-)
Io ho fatto così, ma non so se è giusto perchè non ho mai usato visual
studio, fino ad ora avevo fatto piccoli script in c++:
sono andato nella cartella src, ho aperto il progetto wxWindows.dsp e ci
sono sei progetti (jpeg files, png files, regez files, tiff files, wxWindows
files, zlib files). Su ciascuno di questi ho cliccato BUILD e mi ha generato
le librerie compresa quella che ti dicevo "wxmswd.lib" ....di sicuro sto
sbagliando...ma dove? :-|
Ciao
