Fehler beim comilieren unter Ubuntu mit wxwidgets
-
Hi
ich hab in windows mit code::blocks und wxwidgets ein programm erstellt das auch wunderbar läuft
jezt wollte ich es mal unter ubuntu 9.04 compilieren auch mit code::blocks und wxwidgets aber da bekomm ich lauter fehler
namespace Testinterface { //-- type declarations ------------------------------------------------------- typedef void __stdcall (*TGetParentWindowInfo)(unsigned &Handle, int &ALeft, int &ATop, int &AWidth, int &AHeight); typedef void __stdcall (*TAddToolMenu)(const void * Modul, char * Caption, char * ExportFunc); struct TTeststruct { public: TGetParentWindowInfo ParentWindowInfo; TAddToolMenu AddToolMenu; } ; } /* namespace Testinterface */ using namespace Testinterface;
als Fehler kommt zB. __stdcall ist initialisiert (stattdessenn lieber __typeof__ verwenden
oder
TGetParentWindowInfo wurde in diesem Gültigkeitsbereich nicht definiertmuss ich noch irgendwas in codeblocks einstellen? arbeite zum ersten mal mit ubuntu
hab schon __stdcall durch __typeof__ ersetzt aber da kommen immernoch fehler, ich hab über 50 fehler da stimmt doch was ni
-
__stdcall ist scheinbar winonly.
Hab aber sofort das hier gefunden:
http://www.mono-project.com/FAQ:_TechnicalMy C code uses the __stdcall which is not available on Linux, how can I make the code portable Windows/UNIX across platforms?
Replace the __stdcall attribute with the STDCALL macro, and include this in your C code for newer gcc versions:#ifndef STDCALL #define STDCALL __attribute__((stdcall)) #endif
Ansonten wären die restlichen Fehler und etwas mehr Code interessant, wenn dich das nicht direkt weiterbringt.
-
danke, funktioniert immernoch nicht
sonst gibts da nicht mehr in der headerdatei, halt noch mehr typedef und structs
-
Dann bitte her mit allen Fehlermeldungen. und etwas mehr Code.
Wenn es aber mehr von dieser Sorte sind:TGetParentWindowInfo wurde in diesem Gültigkeitsbereich nicht definiert
dann müsste das auch unter Windows nen Fehler geworfen haben, denn ich glaub nicht dass dort der Compiler einfach so mit nem Typ arbeiten kann der nicht bekannt ist...
#include sollte helfenAußerdem
namespace Testinterface { /// } using namespace Testinterface; // aua aua aua ;)
ist ja soooo böse, wenn das im header ist, und danach schauts aus...
Da kannst du dir den namespace doch auch schenken.
MERKE: im Header NIEMLAS using namespace xyz. Denn wird der Header includiert, ist dort der Schutz durch den namespace sofort aufgehoben!
-
ok danke werd deine hinweise beachten
ich habs erstmal ohne __stdcall probiert und da geht alleshab noch ein anderes problem und zwar includiere ich ne header datei
#include "..\source_global\BioStreamInterface.h"
da bringt er mir jetzt den Fehler
No such file or directorymuss ich da was unter ubuntu beachten?
-
ok habs selber gefunden, hab einfach den kompletten pfad angegeben
also
#include "/home/user/Testordner/source_global/Testinterface.h"
etwas unschön aber geht
-
Was aber richtig unschön ist, weil wenn sich der Pfad mal ändert kompilierts nimmer. Wenn das Programm auf nen anderen Rechner transferiert wird kompilierts nimmer.
Außerdem kennt Ubuntu und jedes halbwegs ordentliche OS keinen Backslash "\" als Dateipfad-Separator. Da nimmt man den "/".
Und soweit ich gelesen hab, kannst du auch unter Windows den normalen "/" für die includes verwenden.
-
achso Ok Danke
an solchen kleinigkeiten hängt man dann stundenlang dran, das ist nervig, aber wenn man es einmal gemacht hat, weiß man es dann hoffentlich für immer
eins noch, ich musste jetzt alle meine wx Texte z.B."test" ändern in wxT("test")
jetzt bringt der auch fehler bei einem erzeugten toolbaritem, was er übrigens automatisch selber gemacht hat, bei den namen weil die _("irgendwas") so erzeugt sindirgendwas ist noch falsch eingestellt, hat das was mit dem unicode und UTF8 zu tun, kann man das nachträglich ändern?