2011-08-03 6 views
2

J'essaie d'appeler un fichier dll C#Comment appeler un fichier dll C#

Le fichier dll est fait à partir d'une application qui utilise ikvm et pour l'instant tout le code n'est imprimé Bonjour tout le monde.

Comment puis-je appeler le fichier dll dans mon code C# et est-il possible de créer une application dans java qui va retourner une valeur booléenne à mon code C#?

Merci pour votre temps.

Répondre

1

Je ne suis pas sûr que je comprends ce que vous essayez de faire, donc des excuses si je suis une mauvaise interprétation. IKVM devrait traduire votre code java en .NET dll ou exécutable. Après la "traduction" vous devriez pouvoir utiliser le fichier .dll plus ou moins de la même manière que vous le feriez avec un code .NET "natif".

Si votre application Java a une méthode principale qui affiche "hello world" sur la console, vous devriez l'avoir convertie en un exécutable .NET (.exe) et non en dll. Après la conversion en .exe (et en supposant que vous l'exécutez sur Microsoft .NET sur un système Windows), vous devriez simplement l'exécuter. En ce qui concerne la deuxième partie de votre question, vous pouvez également créer une DLL (convertie à partir de Java) qui renvoie un booléen et le consomme à partir d'une application C#. Voir this tutorial pour deux exemples de (à peu près exactement) ce que vous faites.

+0

l'idée était que finalement je ferais une application qui prend une chaîne et me fournit un booléen valeur pour indiquer si elle a été trouvée ou non - ce ne serait pas possible avec un exe serait-il? Je ne pourrais pas inclure cela dans le projet pourrais-je? – rik

+0

le tutoriel j'ai lié les adresses de cette partie aussi. Un fichier .dll n'a généralement pas de méthode "principale" qui écrit sur la console, donc si vous voulez l'utiliser comme ça, vous devriez en faire une classe avec un 'public String helloWorld()' qui retourne simplement "hello world" comme une chaîne. Après avoir converti cela en .NET dll avec IKVM, vous pouvez ensuite le référencer dans un projet d'application console et appeler 'Console.WriteLine (myConvertedClass.helloWorld());' –

+0

doit-il être une application console? J'utilise cela comme un aparté à une pièce dans une application winforms? Essentiellement, je veux obtenir une liste de données disponibles à partir d'un système interne, mais l'API est 100% Java pour cette partie - j'ai aussi besoin de vérifier d'autres données mais cela est fait en utilisant C# - les résultats sont ensuite affichés dans un tableau. tout simplement je voulais vérifier les données dans Java, puis retourner les résultats dans mon application pour afficher dans un tableau - je ne serai pas en mesure de le faire? – rik

1
using System.Runtime.InteropServices; 

Vous pouvez ensuite utiliser

[DllImport("myjavadll.dll")] 

Ensuite, ajoutez la dll comme référence par un clic droit et naviguer vers dans le dossier de référence.

EDIT:

Voici un lien qui appelle une dll C++ C#. Vous pourrez peut-être y arriver.

Call another languages DLL

EDIT: J'ai eu des problèmes en ajoutant DLLs comme référence et a été forcé d'ajouter une ressource. Je crois que c'était parce que je travaillais avec une DLL sys32.

Voici un ancien article où j'essayais de résoudre certaines erreurs d'importation de DLL. Peut-être sera-t-il utile si vous rencontrez des problèmes.

Old Post

+0

Je crois que cela devrait fonctionner, corrigez-moi si je me trompe, je vais doublecheck sur un ancien projet en attendant – sealz

+0

comment puis-je appeler la méthode principale alors, essentiellement car c'est ce que la DLL est - un java principal méthode que lorsque appelé impressions bonjour monde – rik

+0

@rik ce tutoriel aiderait-il à la réponse? il montre une méthode d'appel dll avant le principal vide statique. – sealz

Questions connexes