2009-04-28 8 views
0

Dans mes jours VB6.0 j'ai utilisé tonnes d'API Windows. J'ai donc eu l'idée que toutes les méthodes d'API que j'ai déclarées s'apparentent à une procédure - ou un point d'entrée basé sur une procédure.API assembly

Ma question:

J'ai écrit un code en C# que je dois accéder à partir VB6.0. Est-il possible de compiler mon code C# dans une DLL et accéder à cette DLL C# à partir de VB6.0 en le déclarant comme un appel d'API? Si oui, comment cela est-il fait?

(j'ai déjà essayé de faire mon C# DLL COM compatible, et cela a fonctionné - mais je voudrais essayer l'approche mentionnée ci-dessus de toute façon)

Merci

+1

Y a-t-il une raison particulière pour laquelle vous ne voulez pas rendre le C# DLL COM conforme? – MarkJ

Répondre

4

Non, vous ne pouvez pas exposer l'entrée pointe vers votre DLL C# en tant qu'API Win32. Si vous avez vraiment, vraiment besoin de créer des points d'entrée procéduraux pour une bibliothèque .NET, la meilleure chose à faire est probablement de créer une bibliothèque wrapper en mode mixte en utilisant C++/CLI. Mais cela semble être un travail difficile: exposer vos classes C# en tant qu'objets COM est susceptible d'être beaucoup moins d'effort et beaucoup plus facile à maintenir.

+0

Totalement correct, +1 –

0

Si vous êtes content d'avoir les mains (très) sales, vous pouvez faire ce que vous voulez en utilisant MSIL. Jetez un oeil à this CodeProject project pour une soluce.