Seite 1 von 1

Kleine C++ Fragen

Verfasst: 22.07.2008 20:07
von Josef Sniatecki
Hallo,

Ich habe hier ein paar Fragen zu C++ ganz allein:
(Nicht lachen, bin kein C++ Profi)

1. Frage
Wie kann ich einen Wert aus einem void Zeiger auslesen.
Also wie mit PB durch die Peek-Befehle.

Beispiel:

Code: Alles auswählen

void *pointer;
int copyOfI;
*pointer=malloc(sizeof(int))
int *i;
i=(int*)pointer;
copyOfI=*i;
Wie kann ich die letzten 3 Zeilen kürzen?
Also in Form von "copyOfI=...pointer...;"
Hab's mal mit "copyOfI=(int)*pointer;" probiert; Ging
aber nicht.

2. Frage
Mit welchem Befehl kann ich Daten die mit "malloc" erstellt wurden
löschen. Habe mal "free" genutzt; Bin mir jedoch nicht sicher, ob dieser
Befehl genau das macht, was ich mir wünsche.

3. Frage
Wie kann ich ASM in C++ direkt nutzen. Also wie in PB durch "!".

4. Frage: Nun die große Frage
Wie kann ich Libs, die ich mit PB erstellt habe, mit C++ nutzen.
Oder besser: Wie kann ich generell Libs mit C++ nutzen.

Danke im Voraus. <)

Verfasst: 22.07.2008 20:17
von DarkDragon

Code: Alles auswählen

void *pointer;
int copyOfI;
*pointer=malloc(sizeof(int))
copyOfI=*((int*)pointer); 
free ist korrekt. Wenn du was mit new erzeugst musst du es mit delete löschen.

Soweit ich weiß ist inline Assembler aber Kompilerabhängig.

Code: Alles auswählen

asm {
  Dein Assemblercode
}
Die 8051 C/EC++ Compiler erwarten in seltenen Fällen sogar, dass du die Opcodes einträgst. Bei anderen 8051 C/EC++ Compilern kann man es auch direkt reinschreiben.

Windows API hilft bei DLLs mit LoadLibrary, ... . Ansonsten kannst du noch statisch linken mit .lib bzw .a Dateien.

Verfasst: 22.07.2008 20:19
von Josef Sniatecki
Danke für die schnelle und hilfreiche Antwort. :D

Verfasst: 02.11.2008 11:12
von Josef Sniatecki
Bin jetzt auf eine neue Wand gestoßen. Ich kann zwar meine
Libs mit LoadLibrary laden, wie kann ich jetzt aber genau diese
Befehle starten? Sowas wie CallFunction in API kenne ich nicht.

Dann habe ich auch noch gleich eine zweite Frage: Wie kann ich in C++
Funktionen durch eine Addresse aufrufen. In PB wäre es
"CallFunctionFast(@Address)"

Vielen dank im voraus.

Verfasst: 02.11.2008 11:22
von ZeHa
Zur zweiten Frage: Du mußt Funktionspointer verwenden. Hier gibt's was zum Thema: http://www.newty.de/fpt/index.html

Verfasst: 02.11.2008 11:29
von Josef Sniatecki
Über Function-Pointers habe ich noch nie gehört (bis heute).
Echt toll die Sache. Danke ZeHa :allright:

Nun brauche ich noch die 1. Frage.

Verfasst: 02.11.2008 18:46
von Thorium
Josef Sniatecki hat geschrieben:Über Function-Pointers habe ich noch nie gehört (bis heute).
Echt toll die Sache. Danke ZeHa :allright:

Nun brauche ich noch die 1. Frage.
Die erste Frage war wie du eine Prozedur in einer geladenen DLL aufrufen kannst, richtig? Funktionspointer wurden ja bereits angesprochen. Die Adressen der Funktionen bekommst du mit der WinAPI: GetProcAddress

Verfasst: 02.11.2008 23:25
von Josef Sniatecki
Danke für eure Hilfen. Werde mich dann mal ran machen. Denn ich
hätte da so einige Befehle die ich in PB geproggt habe in C++.