Я пытаюсь использовать JavaCPP для создания привязок Java для некоторой библиотеки C ++. Процесс имеет 2 аспекта
Файл «свойств» Java (часть, которая описывает, как создать .so и как генерировать файл Java), выглядит следующим образом:
@Properties(
//target = "Client", // NOTE: with this commented, .so gets built; with it enabled, Java class gets written
value = @Platform(
includepath = {"jnigen/src/main/cpp/mpf"},
include = "ClientWrapper.hpp")
)
public class Mpf implements InfoMapper {
public void map(InfoMap infoMap) {
infoMap.put(new Info("mpf::ClientWrapper").pointerTypes("Client"));
}
}
Проблема в том, что я не могу на всю жизнь генерировать привязки C ++. Я знаю, потому что .so не содержит точек входа, глядя на это с nm -D X.so
, Если я укажу свойство «target», класс Java будет выведен, что делает хорошо выглядеть, но нет .so
, Если я уйду target
собственность, так успешно построена, но у него нет привязок. Я также вижу, что он их не получил, передав -nodelete java -jar javacpp.jar
поэтому он сохраняет сгенерированные файлы cpp — в них есть только маршаллинг, а не мои вещи (один класс).
Документация по JavaCPP — это кошмар, и шаги настолько запутаны, что я не могу решить это. Предложения по альтернативным библиотекам также приветствуются. Благодарю.
Новый Рецепты картографирования для библиотек C / C ++ Вики-страница должна прояснить все это, но дайте мне знать, если что-то еще неясно, и я приведу здесь дополнительную точность.
В этом случае мы могли бы вызвать JavaCPP на Mpf
с @Properties(target="Client", ...)
набор значений, создание класса с именем Client
Таким образом, серия команд будет выглядеть так:
$ javac -cp javacpp.jar Mpf.java
$ java -jar javacpp.jar Mpf
$ javac -cp javacpp.jar Client.java
$ java -jar javacpp.jar Client
Других решений пока нет …