J'essaye de générer une DLL que je peux accéder à partir de Java via JNA.UnsatisfiedLinkError - comment créer la DLL C++?
J'essaie juste un simple:
CPP:
void Initialize()
{
std::cout<< "Hello World!";
}
iostream est également inclus et après la compilation je reçois: CreateDll.dll
Via Visual Studio, je peux générer maintenant un * .dll.
que je tente de charger en Java comme:
public class mainRoutine {
public static void main(String[] args) {
NativeWrapper INSTANCE = (NativeWrapper) Native.loadLibrary("CreateDll" , NativeWrapper.class);
INSTANCE.Initialize();
}
static {
System.setProperty("jna.library.path", "C:\\workspace\\JNA");
}
}
Il y a aussi une autre interface:
importation com.sun.jna.Library;
public interface NativeWrapper extends Library {
void Initialize();
}
donc, mais maintenant en cours d'exécution de la fonction Java j'obtiens l'erreur,
java.lang.UnsatisfiedLinkError:
Error looking up function 'Initialize':
The specified procedure could not be found.
Qu'est-ce que je manque? PS: Je sais qu'il y a beaucoup de sujets, mais en essayant depuis un jour, je n'ai pas encore trouvé la solution. Aidez-moi, s'il vous plaît.
Je devine votre DLL n'exporte le symbole requis. – Nick
Utilisez Dependency Walker (http://www.dependencywalker.com/) pour afficher les noms des fonctions exportées. – technomage
Si vous compilez des choses quand même, [JavaCPP] (http://code.google.com/p/javacpp/) est probablement plus facile à utiliser que JNA ... –