Необходимо импортировать файл заголовка подкаркас для JNI в Objective-c - PullRequest
0 голосов
/ 15 мая 2018

Фреймворк JavaVM содержит подкаркас, фреймворк JavaNativeFoundation. Эта подфреймворк содержит заголовочный файл JNFRunLoop.h, который мне нужен.

Согласно документации Apple:

#import <Framework_name/Header_filename.h>

В обоих случаях Framework_name - это имя фреймворка и Header_filename - это имя файла заголовка в этой структуре или в один из его подрамников.

#import <JavaVM/JNFRunLoop.h> не работает (файл JavaVM / JNFRunLoop.h не найден).

Я попытался добавить заголовки подфреймворка в путь поиска заголовка, и хотя это позволяет мне импортировать его, он дает ошибку времени компиляции, которая упоминается в документации:

Заголовочные файлы зонтика и заголовочные файлы подрамника содержат переменные препроцессора и проверки для защиты от включения файлы заголовков подрамника.

В конечном итоге мне нужно сделать это:

[JNFRunLoop performOnMainThreadWaiting:YES withBlock:block];

, который не будет работать, пока я не смогу импортировать этот заголовочный файл. Есть идеи?

1 Ответ

0 голосов
/ 15 мая 2018

Авторы библиотеки поставили этого охранника нарочно.Вы уверены, что делаете все правильно?

Если библиотека позволяет вносить изменения, правильным способом было бы взять ее и адаптировать к вашим потребностям.

Если вам нужен быстрый и грязный способчтобы вызвать этот метод, вы можете попытаться объявить его внутри вашего файла .m следующим образом:

@interface JNFRunLoop
+ (void)performOnMainThreadWaiting:(BOOL)w withBlock:(void (^)(void))b;
@end

(он должен соответствовать тому, как он объявлен в JNFRunLoop.h с точки зрения имени и типа параметра)

После этого объявления оно становится доступным для вызова.Обратите внимание, что это не будет работать, если библиотека требует каких-то специальных шагов инициализации, или если это имя функции искажено в их двоичном файле или не представлено их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...