2010-06-11 6 views
1

J'ai C++ DLL et 1 programme (pas de code), ce programme appelle 1 fonction de DLL, je connais seulement le nom de cette fonction, maintenant tous veulent appeler cette fonction de mon application (C#) . C'est possible?Extraire les informations de fonction de C++ dll

Merci

+0

Est-ce un nom ordinaire ou un nom tronqué? –

Répondre

2

Je suppose que vous avez seulement la DLL par lui-même, si vous avez un fichier d'en-tête et il serait beaucoup plus facile puisque vous pouvez passer directement à déterminer directement comment il Pinvoke.

Vous devez d'abord vous procurer la signature de la fonction pour connaître les arguments et leurs types. Si c'est une DLL C++, vous pourriez être en mesure de sortir ceci avec Dependency Walker, s'il s'agit d'une DLL C, vous pourriez avoir à regarder le code d'assemblage réel pour comprendre les arguments et leurs types.

Si vous ne trouvez pas la signature, alors vous pouvez utiliser PInvoke pour l'appeler à partir de C#, regardez le PInvoke website pour plus de détails et de nombreux exemples.

+0

Merci pour relpy ... Dépendance Walker montre qu'il s'agit d'un dll c, et il ne peut pas afficher plus d'informations, seul le nom de la fonction. J'installe PInvoke, il n'a que le bouton de recherche, comment puis-je choisir mon dll ou de la fonction, pour afficher des informations? Merci –

+0

@Armen: Désolé, vous avez mal compris, PInvoke ne peut pas être utilisé pour trouver les informations sur la fonction. Vous devez d'abord trouver cela d'une manière ou d'une autre, après cela vous utilisez PInvoke pour l'appeler. Le site Web PInvoke peut vous fournir des informations sur la façon de mapper des types de données C# vers C, etc. Je pense que tout ce que vous devez savoir est le nom de la fonction et ses arguments, mais trouver cela peut être difficile. –

+0

oh ok, tahnks. –

Questions connexes