2009-04-28 10 views
0

In meiner VB6.0 Tage habe ich Tonnen von Windows-API verwendet. So kam ich auf die Idee, dass alle API-Methoden, die ich deklariert habe, ziemlich prozedurbasiert sind - oder es hat einen prozedurbasierten Einstiegspunkt.API-Assembly

Meine Frage:

Ich habe einige Code in C# geschrieben, die ich brauche von VB6.0 zuzugreifen. Ist es möglich, meinen C# -Code in eine DLL zu kompilieren und auf diese C# -DLL von VB6.0 zuzugreifen und sie als API-Aufruf zu deklarieren? Wenn ja, wie wird das gemacht?

(Ich habe bereits versucht, meine C# DLL COM-konform zu machen und es funktionierte - aber ich möchte den oben genannten Ansatz dennoch versuchen)

Dank

+1

Gibt es einen bestimmten Grund, warum Sie nicht wollen, dass die C# -DLL COM kompatibel ist? – MarkJ

Antwort

4

Nein, Sie können nicht aussetzen den Eintrag verweist auf Ihre C# -DLL als Win32-APIs. Wenn Sie wirklich prozedurale Einstiegspunkte für eine .NET-Bibliothek erstellen müssen, sollten Sie wahrscheinlich eine gemischte Wrapper-Bibliothek mit C++/CLI erstellen. Aber das scheint harte Arbeit zu sein: Ihre C# -Klassen als COM-Objekte zu exponieren ist wahrscheinlich viel weniger Aufwand und viel einfacher zu warten.

+0

Völlig korrekt, +1 –

0

Wenn Sie Ihre Hände (sehr) schmutzig machen, können Sie mit MSIL machen, was Sie wollen. Werfen Sie einen Blick auf this CodeProject project für eine Komplettlösung.