Re: Вопросы по использованию wxWidgets из DLL
От: игппук Беларусь  
Дата: 20.03.08 17:07
Оценка:
wxWidject поставляется в исходниках. поэтому, первый шаг, который требуется сделать — это откомпиллировать эти исходники. проект для студии лежит в следующей папке

\wxWidgets-2.8.7\build\msw\ (разумеется, для винды).

перед компилляцией исходников нужно выбрать режим компилляции (релиз, дебаг, либина, длл). если вам нужно откомпиллировать исходники как debug dll, то следует выбрать следующий режим

Dll Unicode Debug

в компилляции есть одна хитрость. если попытаться просто откомпиллировать солюшион, то компилляция обломается, если мне не изменяет мой склероз, на проекте dbgrid. поэтому, лучше поступить следующим образом:
1. выбирать ручками (мышкой) отдельно каждый проект и компилять его отдельно (а не солюшион)
2. если компиляция проекта не удалась (dbgrid, odbc, qa), то временно пропускаем эти проекты. они привязаны к другим проектам и не могут быть откомпиллированы без нужных dll (или lib).
3. компиллируем все возможные проекты (первый проход)
4. компиллируем проекты, которые ранее не удалось откомпиллить. теперь нужные dll имеются и пропущенные проекты должны откомпиллироваться нормально

в результате компилляции исходников имеем следующую папку, и в ней будут лежать откомпиллированные dll.

wxWidgets-2.8.7\lib\vc_dll\

далее. создаем свой проект и хотим прикрутить к нему wxWidject. сложность в том, что, в зависимости от режима компилляции (дебаг, релиз) требуется разная настройка параметров проекта.
допустим, что мы хотим собрать свой проект как debug. в таком случае нам потребуется прописать некоторые настройки.

1. C/C++ Additional Include Directories: vc_dll/mswud;include;.;vc_dll/mswud/wx;msvc
2. C/C++ Optimization: Disabled
3. C/C++ Preprocessor: WIN32;_DEBUG;_WINDOWS;__WXMSW__;WXUSINGDLL;$(NOINHERIT)

настройки самой студии:
1. VC++ Directories Include files: wxWidgets-2.8.7\include\msvc + \wxWidgets-2.8.7\include
2. VC++ Directories Libraries files: wxWidgets-2.8.7\lib\vc_dll + wxWidgets-2.8.7\lib

пути я привел свои, вы припишите свои (зависят от версии wxWidject)

по моему, ничего не пропустил. при таких настройках проект свободно работает с wxWidject как с dll и никаких проблем не наблюдается. для проверки простой код


#pragma once
#include "wx/wx.h"

class App : public wxApp
{
    public:
        App();
                ~App();
        virtual bool OnInit();
        virtual int OnExit();
};



#include "StdAfx.h"
#include "App.h"

IMPLEMENT_APP(App)

//----------------------------------------------------------------------------- 
// Name        : App
// Parameters  : 
// Return      : 
// Description : Constructor
//----------------------------------------------------------------------------- 
App::App()
{
}

//----------------------------------------------------------------------------- 
// Name        : ~App
// Parameters  : 
// Return      : 
// Description : Destructor
//----------------------------------------------------------------------------- 
App::~App()
{
}

//----------------------------------------------------------------------------- 
// Name        : OnInit
// Parameters  : 
// Return      : 
// Description : 
//----------------------------------------------------------------------------- 
bool App::OnInit()
{
    return true;
}

//----------------------------------------------------------------------------- 
// Name        : OnExit
// Parameters  : 
// Return      : 
// Description : 
//----------------------------------------------------------------------------- 
int App::OnExit()
{
    return 0;
}
проклятый антисутенерский закон
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.