Problem z konfiguracją WxWidgets[c++]

0

Korzystając z tego linku:
http://www.cpp.cal.pl/readarticle.php?article_id=38
Skonfigurowałem visual c++ do pracy z WxWidgets. Ale przy kompilacji pojawia się taki błąd:

game.cpp
d:\wxwidgets-2.8.9\include\msvc\wx\setup.h(26) : fatal error C1083: Cannot open include file: '../../../lib/vc_dll/wx/setup.h': No such file or directory

Tak jakby kompilator nie mógł znaleźć bibliotek (wcześniej doczepiał się do plików nagłówkowych, ale jakoś to zrobiłem, że już tego nie robi). Oto moje ustawienia bibliotek:
http://www.imagic.pl/public/pview/233067/screen1.jpg
http://www.imagic.pl/public/pview/233075/screen2.jpg
Męczę się już z tym 4 dni.Proszę o pomoc.

0

A sprawdzałeś czy masz w ogóle ten plik w danej lokalizacji? Może skompilowałeś bibliotekę w wersji release, a program kompilujesz w wersji debug?

0

Plik jest, sprawdzałem. A bibliotekę kompilowałem: build->rebuild.

0

No dobra, ale skompilowałeś w obu wersjach (tzn. w debug i release)? To samo z wersjami ANSI i UNICODE, jeżeli wx'y masz w wersji ANSI, to nie możesz robić projektu w wersji UNICODE - sprawa jasna.

Przejrzałem sobie plik setup.h (z SVN) i jedna rzecz mi się nie zgadza - ścieżka, którą podał kompilator:

'../../../lib/vc_dll/wx/setup.h

a powinna być:

'../../../lib/vc_dll/msw[ud|d|u]/wx/setup.h

Może tu zajrzyj --> Microsoft Visual C++ Guide.

0

Otworzyłem buil/msw/wx i dałem build->rebuild. Nic nie zmieniałem.

0

No ja też otworzyłem projekt, skompilowałem i działa ;-P

Informacja, którą podałeś, nic mi nie mówi.

0

A mógłbyś powiedzieć co dokładnie zrobiłeś?

0

Nie mogę powiedzieć, bo nie pamiętam. Zapewne kompilowałem tak, jak było to opisane na stronie wxWidgets. W katalogu wx'ów masz też plik install.txt (lub coś w tym stylu), tam masz informacje o kompilacji pod VC. Dodatkowo masz jeszcze link, który podałem wcześniej.

0

Heh, tylko, że wszędzie piszą co innego.

0

No to skup się na tym, co jest napisane w pliku install.txt.

0

Mam plik compiling.txt i w nim o visualu jest napisane coś takiego:

Microsoft Visual C++ compilation

You may wish to visit http://wiki.wxwindows.org/wiki.pl?MSVC for a more
informal and more detailed description of the process summarized below.

Please note that the VC++ 6.0 project files will work for VC++ .NET also.

VC++ 5.0 can also be used, providing Service Pack 3 is applied. Without it
you will have trouble with internal compiler errors. It is available for
download at: ftp://ftp.microsoft.com/developr/visualstudio/sp3/full.

Using project files (VC++ 6 and later):

  1. Unarchive wxWidgets-x.y.z-vc.zip, the VC++ 6 project
    makefiles (already included in wxMSW-x.y.z.zip and the setup version).

  2. Open build\msw\wx.dsw, which has configurations for static
    compilation or DLL compilation, and each of these available in
    Unicode/ANSI, Debug/Release and wxUniversal or native variations.
    Normally you'll use a static linking ANSI configuration.
    Choose the Win32 Debug or Win32 Release configuration (or any other that
    suits your needs) and use Batch Build to compile all projects. If you
    know you won't need some of the libraries (i.e. html part), you don't have
    to compile it. It will also produce similar variations on jpeg.lib,
    png.lib, tiff.lib, zlib.lib, and regex.lib.

    If you want to build DLL configurations in wx.dsw project you unfortunately
    need to build them in the proper order (jpeg, png, tiff, zlib, regex, expat,
    base, net, odbc, core, gl, html, media, qa, adv, dbgrid, xrc, aui, richtext)
    manually because VC6 doesn't always respect the correct build order.

    Alternatively, use the special wx_dll.dsw project which adds the
    dependencies to force the correct order (but, because of this, doesn't work
    for the static libraries) or simply redo the build several times until all
    DLLs are linked correctly. Pleae notice that it's normal that dbgrid project
    doesn't build if wxUSE_ODBC is set to 0 (default).

  3. Open a sample project file, choose a configuration such as
    Win32 Debug using Build | Set Active Configuration..., and compile.
    The project files don't use precompiled headers, to save disk
    space, but you can switch PCH compiling on for greater speed.
    NOTE: you may also use samples/samples.dsw to access all
    sample projects without opening each workspace individually.
    You can use the Batch Build facility to make several samples
    at a time.

Using makefiles:

  1. Change directory to build\msw. Type:

'nmake -f makefile.vc'

to make the wxWidgets core library as release DLL.
See "Configuring the build" for instruction how to build debug or static
libraries.

  1. Change directory to samples and type 'nmake -f makefile.vc'
    to make all the samples. You can also make them individually.

Makefile notes:

Use the 'clean' target to clean all objects, libraries and
executables.

Note (1): if you wish to use templates, please edit
include\wx\msw\setup.h and set wxUSE_DEBUG_NEW_ALWAYS to 0.
Without this, the redefinition of 'new' will cause problems in
the headers. Alternatively, #undef new before including template headers.
You will also need to set wxUSE_IOSTREAMH to 0 if you will be
using templates, to avoid the non-template stream files being included
within wxWidgets.

Note (2): libraries and applications generated with makefiles and
project files are now (hopefully) compatible where static libraries
are concerned, but please exercise caution nevertheless and if
possible, use one method or the other.

Note (3): some crash problems can be due to inconsistent compiler
options. If strange/weird/impossible things start to happen please
check (dumping IDE project file as makefile and doing text comparison
if necessary) that the project settings, especially the list of defined
symbols, struct packing, etc. are exactly the same for all items in
the project. After this, delete everything (including PCH) and recompile.

Note (4): to create your own IDE files, copy .dsp and .dsw
files from an existing wxWidgets sample and adapt them, or
visit http://wiki.wxwindows.org/wiki.pl?MSVC.

Nie za dobrze znam angielski, ale z tego co rozumiem to trzeba otworzyć plik wx z pliku build/msw i go skompilować. Następnie dołączyć includy i liby i gotowe. Chyba, że coś źle zrozumiałem.
No i to dotyczy wersji 6.0 i wcześniejszych, a ja mam 2008.

0

No i to dotyczy wersji 6.0 i wcześniejszych, a ja mam 2008.

Nie, to dotyczy wersji 6.0 i następnych :-)

ale z tego co rozumiem to trzeba otworzyć plik wx z pliku build/msw i go skompilować.

Tak, ale najpierw wybrać tryb kompilacji:

Choose the Win32 Debug or Win32 Release configuration

i dać 'Batch Build'. Skompiluj bibliotekę w dwóch wersjach - debug i release.

0

Dałem 'batch build' zaznaczyłem wszystko i kliknąłem build. Wyskoczyło dużo błędów dotyczących tej samej biblioteki:

LINK : fatal error LNK1181: cannot open input file 'wxmswuniv28_core.lib'

0

Skompilowałem build i rebuild, ale dalej jest ten sam błąd:

d:\wxwidgets-2.8.9\include\msvc\wx\setup.h(26) : fatal error C1083: Cannot open include file: '../../../lib/vc_dll/wx/setup.h': No such file or directory

0

Cały czas nie mogę zrozumieć jakim cudem u ciebie jest ta ('../../../lib/vc_dll/wx/setup.h') ścieżka?

U mnie plik {wxroot-2.8.9}\include\msvc\wx\setup.h załącza: #include "../../../lib/vc_dll/msw/wx/setup.h" (wersja DLL Release). Czyli pełna ścieżka wygląda tak:

{wxroot-2.8.9}\lib\vc_dll<b>msw</b>\wx\setup.h".

Identycznie sprawa wygląda w wersji 2.7.2. To trochę dziwne, żeby u ciebie było inaczej...

0

Więc zmieniłem, w pliku źródłowym, na ścieżkę, którą podałeś, ale teraz wyskoczył taki błąd:

LINK : fatal error LNK1104: cannot open file 'wxbase28ud.lib'

0

Jeżeli wx'y skompilowałeś tylko w wersji ANSI, musisz w ustawieniach projektu ustawić opcję Character Set (General) na Use Multi-Byte Character Set.

0

Nie pomogło, dalej jest ten sam błąd.

0

[rotfl] A masz w ogóle ten plik (tzn. czy skompilowałeś wx'y w wersji debug)?

0

Nie wiem kompilowałem tylko przez batch build i zwykłe rebuild. Powiedz mi jak skompilować w wersji debug to to zrobię.
P.S.
Jak kompilowałem przez bathc build to wyświetlały się błędy dotyczące właśnie tej biblioteki. Może nie została poprawnie skompilowana?

0

Dobra, po kolei:

  • ściągnij wxMSW-2.8.9.zip
  • otwórz plik {wxroot}\include\wx\msw\setup.h.
  • znajdź wxUSE_ODBC i ustaw na 1.
  • zapisz.
  • otwórz {wxroot}\wxMSW-2.8.9\build\msw\wx_dll.dsw.
    Jak się będzie pytał, czy przekonwertować projekty, to wybierz 'yes to all'.
  • na górze masz combo, w którym po rozwinięciu możesz wybrać tryb kompilacji. Wybierz DLL Debug.
  • w menu Build wybierz Build Solution.
  • jak się skompiluje, w górnym combo wybierz DLL Release.
  • w menu Build wybierz Build Solution.
  • wsio...
0

Zrobiłem tak jak napisałeś, ale dalej był ten sam błąd. Hm...a może robię coś źle przy tworzeniu projektu?

0

Co, znowu chce wxbase28ud.lib?

0

Nie wiem czy to o to chodzi w tym przypadku, ale zdaje sie, ze trzeba zmieniac opcje oddzielnie dla kazdego projektu w solucji, dla wszystkich projektów na raz nie chcial mi zmienic (w moim przypadku na static release ansi i uzycie tylko standardowych bibliotek - bez runtime visual C++).

Poza tym po skompilowaniu dołączone przykłady odwołują się do includów i lib-ów przez podanie ścieżki względnej w opcjach projektu (bodajże przejscie 2 katalogi wyżej) - kompilacja tych przykładów działała mi z palca, ale jak przeniosłem odpowiednie pliki do odpowiednich katalogów Visuala (include/lib) to mialem problem pomimo ze pliki były widziane przez IDE (chyba wlasnie cos z setup.h) - jakos go rozwiazalem grzebiąc w opcjach katalogów ale juz nie pamietam dokladnie jak.

0

Nie mają znaczenia ustawienia projektu za każdym razem czepia się o to samo:

d:\program files\pobrane\wxmsw-2.8.9\wxmsw-2.8.9\include\msvc\wx\setup.h(26) : fatal error C1083: Cannot open include file: '../../../lib/vc_lib/mswud/wx/setup.h': No such file or directory

Że nie ma takiego pliku.

0

Kompilowales w trybie debug? No to skopiuj tam ten setup.h

0

Oj Bercikos Bercikos. Jeżeli zrobiłeś dokładnie tak, jak napisałem, to musisz zrobić projekt w wersji ANSI. Po ścieżce widać, że kompilujesz projekt w wersji UNICODE: '../../../lib/vc_lib/mswud/wx/setup.h'. Pisałem już, co powinieneś przestawić. Widać jeszcze, że linkujesz wx'y statycznie (vc_lib), a powinieneś dynamicznie (vc_dll). W przypadku wx'ów linkowanych dynamicznie powinieneś ustawić WXUSINGDLL w ustawieniach preprocesora.

Nie mają znaczenia ustawienia projektu za każdym razem czepia się o to samo:

O, ale teraz jest różnica - ścieżka jest poprawna. Dodałeś do includów ścieżkę {wxroot}\include\msvc</i> ?

Jeśli wszystko masz poprawnie ustawione i skompilowane, a błąd dalej występuje, możesz jeszcze spróbować zrobić taką rzecz:

skopiuj {wxroot}\include\msvc\wx\setup.h do {wxroot}\include\wx</i>.</li> otwórz setup.h w nowej lokalizacji i powywalaj jedno '../' z każdej ścieżki.</li> </ul>
0

A jak ustawić, żeby projekt był kompilowany w wersji ANSI?

0

Żartujesz? Pisałem już o tym.

0

Więc zmieniłem na ANSI (use multy-byte character set), ale wyskakuje taki błąd:

d:\program files\pobrane\wxmsw-2.8.9\wxmsw-2.8.9\include\msvc\wx\setup.h(134) : fatal error C1083: Cannot open include file: '../../../lib/vc_dll/mswd/wx/setup.h': No such file or directory

Spróbuje jeszcze zrobić to co mi radziłeś dwa posty temu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1