2009-06-11 11 views
1

J'ai un SDK écrit principalement en C#. Nous avons un code natif qui a été écrit pour des raisons de sécurité et de performance. Nous utilisons DllImport pour interopérer avec le code natif. Il y a quelques fonctions que j'obtiens une erreur "Unable to find an entry point named '...' in DLL '...'.":"". J'ai vérifié que la fonction qui n'est pas trouvée est exportée. J'ai vérifié qu'il n'a pas de nom mutilé. J'ai vérifié que les paramètres sont alignés. J'ai essayé quelques conventions d'appel différentes dans l'attribut DllImport. Je suppose que je peux continuer à essayer ce genre de manière aléatoire, mais j'espère qu'il y aura une approche plus directe.Quelles sont les étapes/outils de dépannage pour l'interopérabilité C# vers natif?

Est-ce que quelqu'un connaît un outil ou une méthode pour obtenir plus d'informations dans un cas comme celui-ci? À quel point devrais-je être certain que la DLL a été localisée? Aurais-je cette exception si les paramètres sont faux? Toute aide serait appréciée.

Pat O

+0

j'ai pu comprendre la question, mais je ne comprends toujours pas une meilleure approche que sorte de enracinement pour voir ce qui est quoi. –

Répondre

0

J'utilise Dependency Walker pour trouver les fonctions exportées dans une DLL C++. Cela vous aidera à assurer que vous essayez d'importer le bon nom, etc.

+0

Merci, j'ai vérifié que les exportations dll sont comme prévu. –

0

J'utilise dumpbin pour obtenir ma liste des exportations ...

Bonne chance!