Я на самом деле пытаюсь открыть библиотеку.Итак (я сделал это на C ++) с JNA, моя проблема в том, что я не могу открыть библиотеку, когда есть статическая переменная.Однако я должен использовать un singleton в моей библиотеке, поэтому я ищу, почему статическая переменная не может быть использована с JNA, чтобы доказать, что она сделала небольшую библиотеку
есть файл .h:
#ifndef UNTITLED1_LIBRARY_H
#define UNTITLED1_LIBRARY_H
#include <iostream>
class library {
private:
static char* h;
public:
int hello();
};
extern "C" int hello(){
library lib;
return lib.hello();
}
#endif
затем мой файл .cpp:
#include "library.h"
#include "ecrire.h"
#include <iostream>
int library::hello() {
h = (char*)"hello world";
std::cout<<h<<std::endl;
return 45;
}
затем мой класс java и интерфейс
public class Westgard {
static {
System.setProperty("jna.library.path","../logic/resources/calculator");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int maj = InterfaceLibWestgard.INSTANCE.hello();
System.out.println(maj);
}
}
import com.sun.jna.Library;
import com.sun.jna.Native;
public interface InterfaceLibWestgard extends Library {
int hello();
static InterfaceLibWestgard INSTANCE = (InterfaceLibWestgard)
Native.loadLibrary("../logic/resources/calculator/libuntitled1.so",
InterfaceLibWestgard.class);
}
Так что, если я попытаюсь, как это, он не будет работать, но когда удалить статическийиз .h это работает, никто не знает, почему я искал с 4-5 часов до сих пор не знаю, почему ...
Это мой журнал проблем:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load
library '../logic/resources/calculator/libuntitled1.so': Native library
(linux-x86-64/../logic/resources/calculator/libuntitled1.so) not found in
resource path ([file:/opt/java/jdk1.8.0_151/jre/lib/resources.jar,