sheel
I love Asm
Nein. Hab ich doch schon mehrfach geschrieben:
C/C++-Programme und DLLs kompilieren ins "echte" Exe/DLL-Format
C# und alle anderen .NET-Sprachen machen zwar auch Exe/Dll-Dateien, die aber außer der Dateierweiterung nicht viel mit den anderen gemeinsam haben und nicht damit kompatibel sind.
C-DLLs können in C# nicht verwendet werden und umgekehrt.
Schon zB deswegen nicht, weil in C# alles aus Klassen besteht und eine C-DLL nur Einzelfunktionen exportiert.
Sowas gibts in C# nicht einmal. Klassen gibts zwar in C++, aber nicht in C, wo DLLs ja auch verwendbar sein sollten.
Oder was soll denn ein int sein? Wirklich nur 4 Byte oder eine Struktur, die von Object erbt und noch ein paar Methoden(auch statische) mitbringt? Und was ist Object in C?
...
Wie gesagt: Eine C++CLI-DLL ist die einzige sinnvolle) Möglichkeit.
C++CLI ist eine von mS entwickelte C++-Abart (so wie C# ja auch mit Java Gemeinsamkeiten hat...), in der aber das .NET-Framework verwendet wird.
Allerdings hat C++CLI unter den .NET-Sprachen eine Sonderstellung:
Man kann auch "echten" C/C++-Code in die gleiche Quelltextdatei dazumischen.
Der wird dann wie normales C++ mitkompiliert.
Deswegen kann man sogenannte Wrapper erstellen: Eine C++CLI-DLL kann die Funktionalität von .NET-Klassen als Echt-C-Funktionen anbieten (und umgekehrt).
Man muss nur überlegen, wie man die Klasse am besten in Einzelfunktionen aufteilt.
zB ein init, das in der DLL ein neues .NET-Objekt anlegt,
andere Funktionen, die von dem Methoden aufrufen...
Gruß
C/C++-Programme und DLLs kompilieren ins "echte" Exe/DLL-Format
C# und alle anderen .NET-Sprachen machen zwar auch Exe/Dll-Dateien, die aber außer der Dateierweiterung nicht viel mit den anderen gemeinsam haben und nicht damit kompatibel sind.
C-DLLs können in C# nicht verwendet werden und umgekehrt.
Schon zB deswegen nicht, weil in C# alles aus Klassen besteht und eine C-DLL nur Einzelfunktionen exportiert.
Sowas gibts in C# nicht einmal. Klassen gibts zwar in C++, aber nicht in C, wo DLLs ja auch verwendbar sein sollten.
Oder was soll denn ein int sein? Wirklich nur 4 Byte oder eine Struktur, die von Object erbt und noch ein paar Methoden(auch statische) mitbringt? Und was ist Object in C?
...
Wie gesagt: Eine C++CLI-DLL ist die einzige sinnvolle) Möglichkeit.
C++CLI ist eine von mS entwickelte C++-Abart (so wie C# ja auch mit Java Gemeinsamkeiten hat...), in der aber das .NET-Framework verwendet wird.
Allerdings hat C++CLI unter den .NET-Sprachen eine Sonderstellung:
Man kann auch "echten" C/C++-Code in die gleiche Quelltextdatei dazumischen.
Der wird dann wie normales C++ mitkompiliert.
Deswegen kann man sogenannte Wrapper erstellen: Eine C++CLI-DLL kann die Funktionalität von .NET-Klassen als Echt-C-Funktionen anbieten (und umgekehrt).
Man muss nur überlegen, wie man die Klasse am besten in Einzelfunktionen aufteilt.
zB ein init, das in der DLL ein neues .NET-Objekt anlegt,
andere Funktionen, die von dem Methoden aufrufen...
Gruß