Welche Fehlermeldungen gibt er denn aus, wie hast du ihn aufgerufen und was gibt der Befehl
gcc --version
aus ? Dann kann ich das Problem vielleicht besser verstehen.
Ein frohes, gesundes und erfolgreiches neues Jahr wünscht
GCC-Zufriedener
Guten Tag,
was wäre denn daran (Debug-Version) schlecht?
Ohne Debug-Symbole bist du doch im Fehlerfall ziehmlich aufgeschmissen, oder verstehe ich etwas falsch ?
Frohes, gesundes und erfolgreiches Neues Jahr wünscht
Dev-C++-User
Danke, das scheint die Lösung gewesen zu sein. Nicht, daß das Programm jetzt funktionieren würde, aber das ist wohl auf logische Fehler zurückzuführen . . .
gcc erlaubt es, den assmbler namen, den eine funktion oder eine statische variable hat, direkt zu spezifizieren.
int foo asm ("myfoo") = 2;
extern int func (int x) asm ("FUNC");
int func (int x) { return x; };
GCC Manual 5.37
das sind dann auch die namen, wie sie dem linker bekannt sind.
argh, @miller_m, hast recht ^^
main.h einbinden und beim compilieren z.b.
g++ -s -xc++ src.cpp main.cpp -o src.exe
dann hast du die main.cpp nämlich in der exe mit drin
ok danke für die schnellen Antworten, es hatte sich erledigt als ich dann einige Zeilen weiter unten geguckt habe Im Endeffekt hatte ich zu wenig Variablen an die Funktion übergeben.
@SeppSchrot: das ist aber ne ide und wenn er was falsches zieht dann hat er mingw wieder nicht mit drin...
@CProgger: Dev-Cpp mit MinGW
[url=http://prdownloads.sourceforge.net/dev-cpp/devcpp4991nomingw_setup.exe]Dev-Cpp
ohne MinGW[/url]
(Dev-Cpp 4.9 (Beta 5) )
die meisten Bibliotheken aus der C++ Standard Library (wie iostream und fstream) werden statisch zum Programm dazugelinkt, d.h. zu deiner exe dazugepackt, deswegen die grosse Datei.
Kleiner machen:
a) OHNE Debugging-Symbole kompilieren (hab ja k.A. welche IDE und welchen Compiler du verwendest, deswegen kann ich dir nicht sagen, wie du das einstellen kannst)
b) "strip" verwenden, kommt beim MinGW mit
c) es gibt eigene "exe-Packer", z. B. upx... http://upx.sourceforge.net
Ich rate einfach mal drauf los:
Vielleicht hat dein File keine korrekte Endung (*.c, *cpp, etc.pp.)?
Wenn ich nen normalen File, ohne Endung kompilieren will, kommt die Meldung bei mir auch.
mfg Christkind
(schönen ersten Weihnachtstag btw.) :xmas1:
Wie weit bist du denn schon? Hattest du schon Funktionszeiger?
void (*)()
ist nämlich so einer, im Gegensatz zu
void*
Und da C++ eine strikte Typenprüfung durchführt, kannst du das eine nicht einfach so dem anderen zuweisen.
Zu deinem anderen Fehler kann man nicht viel sagen, du hier zu wenig Infos vorhanden sind.
Noch 'ne andere Idee. Hast du den Prototypen entsprechend eingebettet (afaik werden nur C Funktionen intern mit dem Unterstrich gehandelt), zB so
#ifdef __cplusplus
extern "C"
{
#endif
void __cdecl test_funktion(void *d,void *s,int bytes);
// alle weiteren Funktionen hier rein
#ifdef __cplusplus
}
#endif
Falls du C++ programmierst, mußt du wegen des name manglings nicht bloß eine *.lib (bzw. *.a) erstellen, sondern den ganzen Krempel mit MinGW neu compilieren und linken.
Mit reinen C-DLLs müßte zumindest die DLL auch ohne Neucompilation funktionieren. Hab ich allerdings nie ausprobiert.
Die Win-API wird mit MinGW natürlich genauso verwendet, wie mit einem anderen Compiler. Allerdings ist die MinGW-Unterstützung nicht vollständig. Es fehlen einige Definitionen, vor allem solche neueren Datums. Allerdings funktioniert schon erfreulich viel. Und wenn z.B. irgendwelche Konstanten fehlen, kann man sie ja einfach in den VC++-Headern "abkucken".
Stefan.
funktionsparameter sind nach dem kompilieren keine eigenständigen symbole mehr. demzufolge kannst du im assmbler text nicht über ihren C namen auf sie zugreifen. Schau am besten mal ins gcc manual, abschnitt 5.35ff - googlen mt 'gcc inline assembly' o.ä. findet auch nützliche links - allerdings meist für x86 assembler.
es muss das SDK für Pocket PC noch mit installiert werden.
Mit der STANDARD_SDK kann man zwar PocketPC 2003 Apps schreiben, aber scheinbar stellt es einige Features nicht bereit.
Wie auch immer...