Anfängerfragen zu Dev-C++ und wxWidgets
-
Hallo zusammen,
ich bin ein relativer Anfänger auf dem Gebiet der C++ Programmierung. Und habe eine längere Programmierpause hinter mir. Also bitte nicht die Hände über dem Kopf zusammenschlagen...
Ich wollte nun auf meinem Rechner (WinXP) mit C++ programmieren und habe mir hierfür Dev-C++ 4.9.9.2 installiert (in C:\Dev-Cpp). Außerdem habe ich auf Empfehlung, um mit Windowsbedienoberflächen arbeiten zu können, wxWidgets installiert und die Bibliotheken erstellt (in C:\Cpp\wxWidgets-2.6.3\lib\gcc_lib).
Nun wollte ich ein Beispielprogramm von wxWidgets mit Dev-C++ kompillieren was nicht funktionierte. Von Hand im XP cmd-Editor konnte ich über das Makefile die Beispielprogramme aber schon erstellen! Ein Kollege hat mir dann den Tip gegeben, dass die lib-Pfade bei Dev-C++ noch angegeben werden müssen. Also habe ich noch folgende Pfade eingetragen:
Werkzeuge -> Compiler optionen -> Verzeichnisse -> Programmdateien:
C:\Dev-Cpp\Bin
Werkzeuge -> Compiler optionen -> Verzeichnisse -> Bibliotheken:
C:\Dev-Cpp\lib
C:\C++\wxWidgets-2.6.3\lib\gcc_lib
Werkzeuge -> Compiler optionen -> Verzeichnisse -> C-Includes:
C:\Dev-Cpp\include
Werkzeuge -> Compiler optionen -> Verzeichnisse -> C++-Includes:
C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include
C:\Dev-Cpp\include\c++\3.4.2\backward
C:\Dev-Cpp\include\c++\3.4.2\mingw32
C:\Dev-Cpp\include\c++\3.4.2
C:\Dev-Cpp\include
C:\C++\wxWidgets-2.6.3\include\wx\msw
C:\C++\wxWidgets-2.6.3\include\wx
C:\C++\wxWidgets-2.6.3\build\msw
C:\C++\wxWidgets-2.6.3\buildBei den Projekt Optionen habe ich folgende Verzeichnisse/Linker angegeben:
Projekte -> Projekt Optionen -> Verzeichnisse -> Bibliotheks-Verzeichnisse:
C:\C++\wxWidgets-2.6.3\lib\gcc_lib
Projekte -> Projekt Optionen -> Verzeichnisse -> Include Verzeichnisse:
C:\C++\wxWidgets-2.6.3\includeProjekte -> Projekt Optionen -> Parameter -> Linker:
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxzlibd.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d_net.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d_xml.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxexpatd.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxjpegd.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_adv.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_core.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_html.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_media.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_xrc.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxpngd.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxregexd.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxtiffd.aMöchte ich z.B. das Beispielprogramm TEXT kompilieren, so bleibt das Programm hängen während es anzeigt, dass die EXE-Datei erstellte wird. Die ersten fünf Zeilen der Fehlermeldung lauten:
C:\C++\wxWidgets-2.6.3\lib\gcc_lib\libwxbase26d.a(baselib_log.o)(.text+0xe0c) In functionZ10wxLogDebugPKcz': 310 C:\\C++\\wxWidgets-2.6.3\\src\\common\\log.cpp multiple definition of
wxLogDebug(char const*, ...)'
310 C:\C++\wxWidgets-2.6.3\src\common\log.cpp first defined here
C:\C++\wxWidgets-2.6.3\lib\gcc_lib\libwxbase26d.a(baselib_filename.o)(.text+0x3573) In functionZN10wxFileName17GetShortcutTargetERK8wxStringRS0\_PS0\_': [Linker error] undefined reference to
CoCreateInstance@20'Was mache ich falsch?
Vielen Dank für Eure Hilfe und viele Grüße
Rolle
-
Nachtrag...
Hier noch der Inhalt des Makefile.win:
# Project: wxWidgets
# Makefile created by Dev-C++ 4.9.9.2CPP = g++.exe
CC = gcc.exe
WINDRES = windres.exe
RES =
OBJ = wxWidgets-samples/text/text.o $(RES)
LINKOBJ = wxWidgets-samples/text/text.o $(RES)
LIBS = -L"C:/Dev-Cpp/lib" -L"C:/C++/wxWidgets-2.6.3/lib/gcc_lib" -L"C:/C++/wxWidgets-2.6.3/lib/gcc_lib" -mwindows C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxzlibd.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d_net.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d_xml.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxexpatd.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxjpegd.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_adv.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_core.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_html.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_media.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_xrc.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxpngd.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxregexd.a C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxtiffd.a
INCS = -I"C:/Dev-Cpp/include" -I"C:/C++/wxWidgets-2.6.3/include"
CXXINCS = -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include" -I"C:/C++/wxWidgets-2.6.3/include/wx/msw" -I"C:/C++/wxWidgets-2.6.3/include/wx" -I"C:/C++/wxWidgets-2.6.3/build/msw" -I"C:/C++/wxWidgets-2.6.3/build" -I"C:/C++/wxWidgets-2.6.3/include"
BIN = wxWidgets-2.exe
CXXFLAGS = $(CXXINCS)
CFLAGS = $(INCS)
RM = rm -f.PHONY: all all-before all-after clean clean-custom
all: all-before wxWidgets-2.exe all-after
clean: clean-custom
${RM} $(OBJ) $(BIN)$(BIN): (CPP) $(LINKOBJ) -o "wxWidgets-2.exe" $(LIBS)
wxWidgets-samples/text/text.o: wxWidgets-samples/text/text.cpp
$(CPP) -c wxWidgets-samples/text/text.cpp -o wxWidgets-samples/text/text.o $(CXXFLAGS)Grüße Rolle
-
[Linker error] undefined reference to `CoCreateInstance@20' <- Bester Hinweis das ist eine Funktion aus der OLE32.lib.
WxWidget legt sich über die Win32Api daher brauchst du auch alle Windows-Libs.
Shell32, Kernel32, OLE, etc.Ausserdem ab in richtige Forum XD
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo Zeus,
vielen Dank für die schnelle Antwort.
Wahrscheinlich ist die Frage ein wenig dumm, aber wo finde ich denn diese Windows-Bibliotheken? Auf meinem Rechner scheinen sie jedenfalls nicht zu sein... oder ich finde sie einfach nicht! Aber da es mit dem Makefile ja geklappt hat, sollten sie eigentlich vorhanden sein. Eine Suche nach ole32.lib war jedenfalls erfolglos. Ich konnte in C:\windows\system32 lediglich eine ole32.dll Datei finden.
An welcher Stelle muss ich denn die Bibliotheken einfügen?Vielen Dank
Rolle
-
So, nun habe ich einen Teil der Bibliotheken gefunden (die heißen ja libshel32.a!). Jedenfalls ist die Liste der Fehlermeldungen geschrumpft. Ich habe nun alle Bibliotheken aus dem Verzeichnis C:\Dev-cpp\lib unter "Projekte -> Projekt Optionen -> Parameter -> Linker" hinzugefügt. Nun habe ich noch folgende Fehlermeldungen:
C:\C++\wxWidgets-2.6.3\lib\gcc_lib\libwxbase26d.a(baselib_log.o)(.text+0xe0c) In functionZ10wxLogDebugPKcz': 310 C:\\C++\\wxWidgets-2.6.3\\src\\common\\log.cpp multiple definition of
wxLogDebug(char const*, ...)'
310 C:\C++\wxWidgets-2.6.3\src\common\log.cpp first defined here
C:\C++\wxWidgets-2.6.3\lib\gcc_lib\libwxmsw26d_core.a(corelib_window.o)(.text+0x2067) In functionZNK8wxWindow11MSWGetStyleElPm': [Linker error] undefined reference to
wxSystemOptions::GetOptionInt(wxString const&)'
C:\C++\wxWidgets-2.6.3\lib\gcc_lib\libwxmsw26d_core.a(corelib_wincmn.o)(.text+0x426) In functionZN12wxWindowBaseC2Ev': [Linker error] undefined reference to
wxSystemOptions::HasOption(wxString const&)'
[Linker error] undefined reference to `wxSystemOptions::GetOptionInt(wxString const&)'Vielen Dank weiterhin
Rolle
-
Die kommen mit dem Compiler mit und sollten bei Dev-Cpp in C:\Dev-Cpp\lib zu finden sein.
Folende libs wirst du wohl brauchen (als Visualstudio-Libs):
kernel32.lib
user32.lib
gdi32.lib (Zeichnungsfunktionen)
winspool.lib (Druckersupport)
comdlg32.lib (Common Dialog)
advapi32.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
odbc32.lib (Datenbank)
odbccp32.libDie entsprechende Libs find findbar als:
libkernel32.a in C:\Dev-Cpp\lib.Ich hab greade geguckt, wie mal das in Dev-cpp eingibt, aber atm nix gefunden O.o
-
Hallo Zeus,
entschuldige bitte, ich hatte die Bibliotheken schon gefunden (siehe Beitrag vor Deinem letzten Beitrag). Ich habe mir einfach die Liste der Bibliotheken aus dem Makefile angeschaut und dann entsprechend bei Dev-C++ unter den Projektoptionen eingetragen. Demnach ist die libobdccp32.a wohl nicht notwendig. Aber auch mit habe ich noch genügend Fehlermeldungen. Ich hatte auch einmal alle Bibliotheken aus dem c:\dev-cpp\lib Verzeichnis eingelinkt. Hatte aber auch keinen größeren Erfolg!
Also mein jetziger Stand ist der aus meinem letzten Beitrag um 15:59:14 Uhr
Derzeit habe ich folgende Bibliotheken eingelinkt:
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxzlibd.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d_net.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxbase26d_xml.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxexpatd.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxjpegd.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_adv.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_core.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_html.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_media.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxmsw26d_xrc.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxpngd.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxregexd.a
C:/C++/wxWidgets-2.6.3/lib/gcc_lib/libwxtiffd.a
C:/Dev-Cpp/lib/libadvapi32.a
C:/Dev-Cpp/lib/libcomdlg32.a
C:/Dev-Cpp/lib/libgdi32.a
C:/Dev-Cpp/lib/libkernel32.a
C:/Dev-Cpp/lib/libodbc32.a
C:/Dev-Cpp/lib/libole32.a
C:/Dev-Cpp/lib/liboleaut32.a
C:/Dev-Cpp/lib/librpcrt4.a
C:/Dev-Cpp/lib/libshell32.a
C:/Dev-Cpp/lib/libuser32.a
C:/Dev-Cpp/lib/libuuid.a
C:/Dev-Cpp/lib/libwinmm.a
C:/Dev-Cpp/lib/libwinspool.a
C:/Dev-Cpp/lib/libwsock32.a
C:/Dev-Cpp/lib/libodbccp32.aViele Grüße
Rolle
-
Hallo Zeus (oder natürlich auch andere),
ich bin leider noch immer nicht weiter...
Heute habe ich aber seltsamer Weise andere Fehlermeldungen. Dabei habe ich nichts verändert:
Compiler: Default compiler
Building Makefile: "D:\Daten\Berechnungen\c++\Test\Makefile.win"
Führt make... aus
make.exe -f "D:\Daten\Berechnungen\c++\Test\Makefile.win" all
g++.exe -c wxWidgets-samples/text/text.cpp -o wxWidgets-samples/text/text.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/bits" -I"C:/Dev-Cpp/include/c++/3.4.2/debug" -I"C:/Dev-Cpp/include/c++/3.4.2/ext" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32/bits" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include" -I"C:/C++/wxWidgets-2.6.3/include/wx/msw" -I"C:/C++/wxWidgets-2.6.3/include/wx" -I"C:/C++/wxWidgets-2.6.3/build" -I"C:/C++/wxWidgets-2.6.3/include"In file included from C:/Dev-Cpp/include/c++/3.4.2/ios:49,
from C:/Dev-Cpp/include/c++/3.4.2/ostream:45,
from C:/Dev-Cpp/include/c++/3.4.2/iostream:45,
from C:/C++/wxWidgets-2.6.3/include/wx/ioswrap.h:17,
from C:/C++/wxWidgets-2.6.3/include/wx/textctrl.h:40,
from C:/C++/wxWidgets-2.6.3/include/wx/wx.h:64,
from wxWidgets-samples/text/text.cpp:19:
C:/Dev-Cpp/include/c++/3.4.2/bits/ios_base.h:181: error: field `_M_msg' has incomplete typeIn file included from C:/Dev-Cpp/include/c++/3.4.2/locale:47,
from C:/Dev-Cpp/include/c++/3.4.2/bits/ostream.tcc:40,
from C:/Dev-Cpp/include/c++/3.4.2/ostream:545,
from C:/Dev-Cpp/include/c++/3.4.2/iostream:45,
from C:/C++/wxWidgets-2.6.3/include/wx/ioswrap.h:17,
from C:/C++/wxWidgets-2.6.3/include/wx/textctrl.h:40,
from C:/C++/wxWidgets-2.6.3/include/wx/wx.h:64,
from wxWidgets-samples/text/text.cpp:19:
C:/Dev-Cpp/include/c++/3.4.2/bits/locale_facets.tcc: In member function\_InIter std::num\_get<\_CharT, \_InIter>::\_M\_extract\_float(\_InIter, \_InIter, std::ios\_base&, std::\_Ios_Iostate&, std::string&) const': C:/Dev-Cpp/include/c++/3.4.2/bits/locale_facets.tcc:325: error: invalid use of undefined type
struct std::string'
C:/Dev-Cpp/include/c++/3.4.2/bits/stringfwd.h:56: error: declaration of `struct std::string'Das ist jetzt mal der Anfang des Compiler-Berichtes.
Vielen Dank für Eure Hilfe
Rolle
-
Ein Tipp, der normalerweise ausreichen sollte:
Dort findest du eine Dev-C++ Version, die die wxWidgets schon mit dabei hat und zusätzlich auch die Möglichkeit bietet, die GUI mit der Maus zusammenzuklicken.
Hab die schon mal ausprobiert und funktioniert super.
Deine ganzen Fehlermeldungen sollten bei dieser Version eigentlich gar nicht mehr auftreten!
-
Hallo Leute,ich hab ein Problem mit devc++, denn ich hab ein Programm geschrieben:
#define PI 3.14159265
#include <stdio.h>double area(int);
main()
{
int r;
printf("radii and areas \n");for (r=1;r<=100;r++)
{
printf("%d - area %f\n", r,area(r));
}
}double area (int r)
{
double a;
a=r*r*PI;
return(a);
}Es funktioniert auch alles bis auf die Ausgabe, denn ich seh die Ergebnisse nur ca 1sec lang!
Kann mir jemand helfen?Grüße,
Fa
-
CoolFa schrieb:
Es funktioniert auch alles bis auf die Ausgabe, denn ich seh die Ergebnisse nur ca 1sec lang!
Kann mir jemand helfen?Das ist die absolute Standard-Frage http://www.c-plusplus.net/forum/viewtopic-var-t-is-111042.html
Und bitte benutz Code-Tags sfds