Я пытался создать оболочку SWIG для этого крошечного маленького класса C ++ большую часть 3 часов, но безуспешно, поэтому я надеялся, что один из вас сможет протянуть мне небольшую руку. У меня есть следующий класс:
#include <stdio.h>
class Example {
public:
Example();
~Example();
int test();
};
#include "example.h"
Вместе с реализацией:
Example::Example()
{
printf("Example constructor called\n");
}
Example::~Example()
{
printf("Example destructor called\n");
}
int Example::test()
{
printf("Holy shit, I work!\n");
return 42;
}
Я несколько раз прочитал страницу введения (www.swig.org/Doc1.3/Java.html), не разбираясь в ситуации. Мои шаги были
- Создать файл example.i
- Компиляция оригинала вместе
example_wrap.cxx (без ссылок)
- связывает полученные объектные файлы вместе
- Создайте небольшой тестовый файл Java (см.
ниже)
- javac все файлы .java и запустите
Ну, шаги 4 и 5 создали для меня массу проблем, начиная с базового («пример» библиотеки не найден из-за отсутствия пути java) до странного (библиотека не найдена, даже если LD_LIBRARY_PATH не установлен на что-то , даже если это вообще ничего). Я включил свой маленький тестовый код ниже
public class test2 {
static {
String libpath = System.getProperty("java.library.path");
String currentDir = System.getProperty("user.dir");
System.setProperty("java.library.path", currentDir + ":" + libpath);
System.out.println(System.getProperty("java.library.path"));
System.loadLibrary("example");
}
public static void main(String[] args){
System.out.println("It loads!");
}
}
Ну, если бы кто-нибудь прошел через эти мутные воды обертывания, я не мог бы быть счастливее, чем если бы вы могли осветить путь, особенно если бы вы могли предоставить команды example.i и bash, чтобы согласиться с ним.