Laden...

C++ wrappen?

Erstellt von mattgroening vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.087 Views
M
mattgroening Themenstarter:in
2 Beiträge seit 2006
vor 17 Jahren
C++ wrappen?

Hi,

ich bin noch Anfänger in Sachen C# und .NET und bin mir nicht sicher ob ich das richtige Forum erwischt habe, aber ich schiesse einfach mal los:

ich möchte in c++ vorhandene Bibliotheken in C# verwenden. (http://www.opensg.org/). Nun hab ich einiges über COM,ATL,dlls usw gelesen aber komme nicht weiter. Wie stelle ich den Code am einfachsten für C# zur Verfügung? Kann man automatisch ne Wrapperklasse erstellen? Oder ist nen ActiveX-Steuerelement ne Möglichkeit? Bin langsam am verzweifeln, weil ich immer weniger verstehe.

Gruß

2.921 Beiträge seit 2005
vor 17 Jahren

Wenn das ganze eine DLL ist oder mehrere in der die Funktionen vorhanden sind,
dann kannst Du z.B. wenn in der DLL eine Funktion

bool SetString(char* chString)

heißt, diese mit

[DllImport("dllname.dll")]
bool SetString(string sString)

benutzen...

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

M
456 Beiträge seit 2004
vor 17 Jahren

C++ Klassen kann man am besten damit wrappen:
http://www.swig.org/

I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.

402 Beiträge seit 2005
vor 17 Jahren

Habe zwar nie selber C++ verwendet (komme direkt von Delphi), aber ist es in VS 2005 nicht möglich aus dem Projekt direkt ein Managed C++ Projekt für .NET zu machen?

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

M
mattgroening Themenstarter:in
2 Beiträge seit 2006
vor 17 Jahren

ICh komme immer noch nicht weiter.
Mit DllImport kann ich nicht arbeiten, da ich nicht weiss, welche Funktionen explizit exportiert werden. Sind das alle Pubilc-Klassen-Funktionen, die in der Headerdatei stehen? Kann ich kaum glauben.

Wollte jetzt unter C++ ein Windows-Steuerelement erzeugen mit einem "Public-Interface". Hab da aber das Problem, dass man bei Windows-Steuerelement-Projekten keinen Unmanaged-Code aufnehmen darf?!

Wie mischt man Unmanaged C++ und Managed C++-Code und baut dann daraus ne Dll, die man in C# als Steuerelement verwenden kann?

Konkret möchte ich den Scenengraphen OpenSG in einer .NET-Anwendung verwenden. Da ich bereits ein Closed-Source-Projekt kenne, mit dem man ein ActiveX-Steuerelement, welches auf OpenSG zurückgreift in einer .NET-Anwendung benutzen kann, muss das doch irgendwie gehen?