mmofacts.com

DLL in C++ nutzen

gepostet vor 18 Jahre von Fornax
Hallo
Ich habe mich endlich mal drangewagt, mich in C++ einzuarbeiten. Ein Freund von mir hat eine DLL in C# geschrieben, die ich gerne in C++ benutzen würde. soweit ich weiß, muss ich "extern int CG;" benutzen. Die Variable/Das Objekt wird ja nicht in meiner, sondern in seiner Datei definiert. Aber wie ich die DLL einbinde, weiß ich nicht
gepostet vor 18 Jahre von Itchy
Du mußt die dll mit LoadLibrary() laden und dann die Einsprungsadresse der Funktion, die Du benutzen möchtest mit GetProcAddress() holen.
msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/loadlibrary.asp
msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getprocaddress.asp
Beispiel:
msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/using_run_time_dynamic_linking.asp
Edit: Ich hab aber noch nie eine DLL aus C# verwendet, keine Ahnung, ob es da genauso funktioniert, mein Erfahrungsschatz erstreckt sich nur auf DLLs, die in C/C++ geschrieben wurden.
gepostet vor 18 Jahre von TheUndeadable
> Ein Freund von mir hat eine DLL in C# geschrieben,
Ok, die DLL ist Managed Code, da nutzt auch kein LoadLibrary. Um sie in C++ aufzurufen, hast du 3 Möglichkeiten:
- Managed C++ (grausam)
- Du erstellst eine .Net-Instanz in C++ und mit der rufst du dann die Bibliothek auf (absoluter Overkill). Tipp: msdn.microsoft.com/msdnmag/issues/01/03/clr/default.aspx
- Dein Freund klickt ein Häkchen an, dass die .Net-Bibliothek auch als COM-Komponente exportiert wird. Diese kannst du dann nutzen (wenn du genug Ahnung von COM hast). Dies wäre meine favorisierte Lösung und geht zumindest mit Visual C++ recht einfach.
> Ich hab aber noch nie eine DLL aus C# verwendet,
> keine Ahnung, ob es da genauso funktioniert, mein
> Erfahrungsschatz erstreckt sich nur auf DLLs, die in
> C/C++ geschrieben wurden.
Geht nicht, da C# sogenannten Managed-Code in einer Intermediate Language erzeugt. Dieser ist nicht direkt aus C++ nutzbar.
gepostet vor 18 Jahre von Itchy
Ok, damit hat sich meine Antwort erledigt, sorry.
gepostet vor 18 Jahre von Fornax
Ich hab's ihm gesagt, hier seine Antwort: "häkchen? XD Ich bin command line compiler XD"
Ich selber benutze devcpp, habe aber auch "Visual C++ 2005 Express Edition" installiert.
Ich schlaf mal ne Nacht drüber, evtl. fällt mir noch was ein, jetzt habe ich keine Zeit mehr
gepostet vor 18 Jahre von Freshman
Da ja alles gesagt wurde
@TheUndeadable:
Ich kann c++ und c#, habe in c# aber nie eine Dll erstellt.
Wie muss ich meine Exportfunktionen erstellen, dass sie in c#
nutzbar sind. Irgendwo passt das ja nicht ganz mit dem
c# Prinzip zusammen.
Reicht es einfach die Dll so umzustellen wie sie es auf der
msdn Seite schreien? Schonmal getestet?
Hast du sowas schonmal gemacht?
mfg
Holger

Auf diese Diskussion antworten