Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

21

24.04.2012, 22:12

Wenn ich eine Dll mit C++ schreibe und in .Net verwenden möchte brauche ich glaube ich ein C Interface. Könnte man dann auch ein bisschen hacken und statt einem Pointer zu Klasse YX einen void* nehmen um bei C zu bleiben?
greate minds discuss ideas;
average minds discuss events;
small minds discuss people.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

22

24.04.2012, 22:15

Was hat das alles plötzlich mit .NET zu tun? Von was für Objekten reden wir da, .NET oder C++?
Wenn du wirklich eine dll schreiben willst, die du von .NET aus zu verwenden planst, dann würde ich dir wohl zu einem puren C Interface raten. Selbst damit kann das schon anstregend genug werden.

Was managed/unmanaged interop betrifft, kann ich einem Anfänger aber nur wirklich wirklich raten, einen wirklich wirklich großen Bogen drum herum zu machen. Das ist eine Ecke, in der die vollen Komplexitäten beider Welten aufeinandertreffen und in der trivial erscheinende Dinge auch sehr erfahrene Programmierer noch in den Wahnsinn treiben können...

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »dot« (24.04.2012, 22:27)


23

25.04.2012, 00:12

Keine Sorge ich habe nicht vor so einen Wahnsinn anzufangen, ich stelle nur gerne was wäre wenn Fragen um Sachverhalte besser zu verstehen :D
Als Beispiel würde ich sagen man hat in der C++ Dll eine Klasse Point mit float X und float Y da .Net meine Point Klasse ja nicht kennt könnte ich dann einfach unmanaged Speicher reservieren und die Dll dort einen Punkt reinschreiben lassen oder wäre das dann schon ein C++ Interface?

So z.B.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
void Foo(void *pMem){ // Für interop
Point p(5f,4f);
memcpy(pMem,&p,sizeof(Point));
}
void Foo(Point *pPoint){ // Als interne funktion oder ähnliches
Point p(5f,4f);
memcpy(pPoint,&p,sizeof(Point));
}
greate minds discuss ideas;
average minds discuss events;
small minds discuss people.

Werbeanzeige