сборка сторонних компонентов (wxDa Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
SmileGobo
Earned some good credits
Earned some good credits
Posts: 111
Joined: Wed Jul 30, 2008 8:01 am
Location: Russia/MO
Contact:

сборка сторонних компонентов (wxDa

Post by SmileGobo » Tue Feb 08, 2011 1:26 pm

Уважаемый T-Rex написал давно написал статью: http://wxwidgets.info/wx_accessing_sqlite_2/ о работе с БД, с помощью либы wxDataBaseLayer: http://wxcode.sourceforge.net/complist. ... ase&page=1

так вот в документации написано что она вроде как поддерживает только сборки версий 2.5 и 2.6, а возможно я не так понял

вобщем при сборке под mingw выдает:

C:\databaselayer\build>mingw32-make -f makefile.gcc WX_UNICODE=1 WX_SHARED=1 WX_
DIR="C:\wx"
----------------------------------------------------------------------------
The selected wxWidgets build is not available!
Please use the options prefixed with WX_ to select another wxWidgets build.
----------------------------------------------------------------------------

пробовал с ключами и без эфект один, какой другой билд ей нужен я так и не понял
win xp sp2; CodeBlocks/mingw/wxWidgets 2.8.9/wxFormBuilder
web-программирование:PHP,js/Ajax

SmileGobo
Earned some good credits
Earned some good credits
Posts: 111
Joined: Wed Jul 30, 2008 8:01 am
Location: Russia/MO
Contact:

Post by SmileGobo » Tue Feb 08, 2011 1:45 pm

выяснил что для сборки нужно указать под какую субд сборка и указать этот как ключ, пробовал SQLite odbc mysql во всех выдает ошибки компиляции

необходимо сложить все в дирректорию с утановленным widgets или можно собирать в отдельной дирректории?
win xp sp2; CodeBlocks/mingw/wxWidgets 2.8.9/wxFormBuilder
web-программирование:PHP,js/Ajax

SmileGobo
Earned some good credits
Earned some good credits
Posts: 111
Joined: Wed Jul 30, 2008 8:01 am
Location: Russia/MO
Contact:

Post by SmileGobo » Wed Feb 09, 2011 1:13 pm

перекопировал компонент в папку с утановленым виджетс собираю выдает следующую ошибку :

Code: Select all

fatal error: opening dependency file gccmswu\databaselayer_mysql_dll_DatabaseLayer.o.d: No such file or directory
compilation terminated.
mingw32-make: *** [gccmswu\databaselayer_mysql_dll_DatabaseLayer.o] Error 1
win xp sp2; CodeBlocks/mingw/wxWidgets 2.8.9/wxFormBuilder
web-программирование:PHP,js/Ajax

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Thu Feb 10, 2011 7:55 am

У тебя директория gccmswu в lib есть? И вообще зачем layer в wx копировать я не понял?
Вот примерно как я собирал (при чем wx я собирал с эти ми же ключами)
mingw32-make -f makefile.gcc odbc WX_SHARED=1 WX_MONOLITHIC=1 WX_UNICODE=1 WX_DEBUG=1
+ в lib создал директорию которой не хватало см сообщения компилятора
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

SmileGobo
Earned some good credits
Earned some good credits
Posts: 111
Joined: Wed Jul 30, 2008 8:01 am
Location: Russia/MO
Contact:

Post by SmileGobo » Thu Feb 10, 2011 10:14 am

такой дирректории в lib нет, если я правильно понимаю туда должны складыватся библиотеки *.dll или *.a
Для этого у меня созданы gcc_dll gcc_lib(это от сборки виджетс)
layer в wx я скопировал потому, что в противном случае не находил хидеры например wx/wxprec.h
win xp sp2; CodeBlocks/mingw/wxWidgets 2.8.9/wxFormBuilder
web-программирование:PHP,js/Ajax

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Thu Feb 10, 2011 2:39 pm

Нет директории - так создай ее. Не находятся хедеры - так укажи директорию wx
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

SmileGobo
Earned some good credits
Earned some good credits
Posts: 111
Joined: Wed Jul 30, 2008 8:01 am
Location: Russia/MO
Contact:

Post by SmileGobo » Fri Feb 11, 2011 8:56 am

создал папку gccmswu - заработало, спасибо.
Директорию wx я указывал через ключ WX_DIR, но это не помогало.
win xp sp2; CodeBlocks/mingw/wxWidgets 2.8.9/wxFormBuilder
web-программирование:PHP,js/Ajax

SmileGobo
Earned some good credits
Earned some good credits
Posts: 111
Joined: Wed Jul 30, 2008 8:01 am
Location: Russia/MO
Contact:

Post by SmileGobo » Tue Mar 15, 2011 5:33 pm

Вобщем я собрать это все смог, но дальше завести неудаетя.
Шлю через databaselayer запрос, все чудно отрабатывается, но на интовые значения получаю нули, на строковые пустые строки, запросы рабочие, колличество строк результата совпадает, почему не могу вытащить данные?

ЗЫ Код остался на работе, но делал по примерам и оно вроде как вертится.
win xp sp2; CodeBlocks/mingw/wxWidgets 2.8.9/wxFormBuilder
web-программирование:PHP,js/Ajax

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Wed Mar 16, 2011 5:29 am

Через что работаешь? Через ODBC? У меня с mdb ф-лами в Win все нормально. Коннеект у тебя точно прошел ты проверку делал?
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

SmileGobo
Earned some good credits
Earned some good credits
Posts: 111
Joined: Wed Jul 30, 2008 8:01 am
Location: Russia/MO
Contact:

Post by SmileGobo » Wed Mar 16, 2011 9:55 am

Вот код:

Code: Select all

DatabaseLayer* db=wxGetApp().GetDB();
    *m_textCtrl16<<wxT("addr in frame: ")<<(int)db<<wxT("\n");
    wxString query(wxT("select idauthors from authors"));
    //DatabaseResultSet* pResultSet = db->  RunQueryWithResults(query);
    //DatabaseErrorCheck(db);
    /*if(!pResultSet){
        wxMessageBox(_T("Error!"));
        return;
    }*/
    DatabaseResultSet* res;
    int id;
    try{
        res=db->RunQueryWithResults(query);
        //m_richText2->Freeze();
        int i=0;
        while(res->Next()){
            m_textCtrl16->AppendText(wxString::Format(wxT("%d: "),i++));
            id=res->GetResultInt(_("idauthors"));
            *m_textCtrl16<<id;
            *m_textCtrl16<<wxT("\n");
        };
        //m_richText2->Thaw();
        db->CloseResultSet(res);
    }
    catch(DatabaseLayerException& e){
        wxMessageBox(e.GetErrorMessage());
    }
Ошибок не возникает, и колличество строк результата совпадает с тем что реально в таблице
работаю через mysql
если библиотека кривая была могло повлиять при сборке?
win xp sp2; CodeBlocks/mingw/wxWidgets 2.8.9/wxFormBuilder
web-программирование:PHP,js/Ajax

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Wed Mar 16, 2011 10:53 am

А коннект где где база то?

Code: Select all

OdbcDatabaseLayer *pDatabase = new OdbcDatabaseLayer();
	wxString mes;

	try
	{
		pDatabase->Open(strCon);
	}
	catch (DatabaseLayerException& e)
	{
		mes.Printf(wxT("%d, %s"),  e.GetErrorCode(), e.GetErrorMessage().c_str());
		wxMessageBox(mes.c_str());
		return;
	}
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

SmileGobo
Earned some good credits
Earned some good credits
Posts: 111
Joined: Wed Jul 30, 2008 8:01 am
Location: Russia/MO
Contact:

Post by SmileGobo » Wed Mar 16, 2011 11:00 am

Code: Select all

bool patentDBviewApp::OnInit()
{
    patentDBviewFrame* frame = new patentDBviewFrame(0L);
    frame->SetIcon(wxICON(aaaa)); // To Set App Icon
    frame->Show();
    ConnectToDB();
    //wxMessageBox(wxString::Format(wxT("%d"),(int)db));
    return true;
}

void patentDBviewApp::ConnectToDB(){
    wxString strServer(wxT("localhost")), strDatabase(wxT("intellect")), strUser(wxT("kompas")), strPassword(wxT("123"));
    db=NULL;
    db = new MysqlDatabaseLayer;

    if( db == NULL ){
        wxMessageBox(wxT("Can't create!"));
        ExitMainLoop();
    }

    if(!db->Open(strServer, strDatabase, strUser, strPassword)){
        wxMessageBox(wxT("Error:")+db->GetErrorMessage());
    }
}

DatabaseLayer* patentDBviewApp::GetDB(){
    return db;
}
win xp sp2; CodeBlocks/mingw/wxWidgets 2.8.9/wxFormBuilder
web-программирование:PHP,js/Ajax

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Wed Mar 16, 2011 12:53 pm

У меня то же самое только с ODBC работает. Отлаживать пробовал смотрел что там в id (id=res->GetResultInt(_("idauthors"));) GetResultString у тебя так нигде и не увидел

А ты пробовал id=res->GetResultInt(n)//где n-номер поля тоже ничего?
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

SmileGobo
Earned some good credits
Earned some good credits
Posts: 111
Joined: Wed Jul 30, 2008 8:01 am
Location: Russia/MO
Contact:

Post by SmileGobo » Wed Mar 16, 2011 8:21 pm

пробовал конечно - та же фигня

попробую скомпилить под odbc пожалуй
win xp sp2; CodeBlocks/mingw/wxWidgets 2.8.9/wxFormBuilder
web-программирование:PHP,js/Ajax

SmileGobo
Earned some good credits
Earned some good credits
Posts: 111
Joined: Wed Jul 30, 2008 8:01 am
Location: Russia/MO
Contact:

Post by SmileGobo » Fri Mar 18, 2011 3:38 pm

Как задать DSN строку соединения с бд ОС winXP субд MYSQL
win xp sp2; CodeBlocks/mingw/wxWidgets 2.8.9/wxFormBuilder
web-программирование:PHP,js/Ajax

Post Reply