2010-08-11 5 views
0

Je suis en train de développer une application qui permettra aux utilisateurs d'appeler du code externe à partir de fichiers .dll natifs et gérés. Les utilisateurs pourront spécifier quelle bibliothèque/méthode/fonction appeler lors de l'exécution (il sera stocké dans un fichier de configuration).Appelez le code natif spécifié lors de l'exécution

Je sais comment faire cela en utilisant pinvoke pour les bibliothèques natives si je sais quelle DLL/fonction je veux appeler au moment de la compilation, mais je ne trouve aucune information sur la façon de le faire à l'exécution.

Essentiellement ce que je voudrais faire est d'appeler une méthode:

int result = ExecuteNativeFunction("someLibrary.dll", "foo"); 

et faites faire quelque chose d'équivalent à:

[DllImport("someLibrary.dll")] 
static extern int foo(); 

... 

int result = foo(); 

Répondre

2

Would this être ce que vous cherchez? En utilisant System.Reflection.Emit, vous pouvez compiler dynamiquement du code qui définit une nouvelle méthode PInvoke. Voir la classe DllRegServer dans le linked file pour plus de détails.

+0

C'est ce que je cherche, même si j'espérais pouvoir éviter Reflection.Emit. –

Questions connexes