Java-Objective-C-Bridge如何创建NSString**

Java-Objective-C-Bridge如何创建NSString**,java,objective-c,macos,jna,Java,Objective C,Macos,Jna,我正在尝试从Java调用本机代码。(在Windows和Mac上)我在Mac上做这件事有困难,因为大多数软件包都过时了。我开始尝试编写JINI代码,发现JNA对于Windows/linux来说更容易,尝试了洛可可,最后偶然发现Java-Object-C-Bridge是一个简单而轻巧的选项,可以使用JNA在Mac上调用Coca函数 我想把目标函数称为C函数 NSWorkspace - (BOOL)getInfoForFile:(NSString *)fullPath applicat

我正在尝试从Java调用本机代码。(在Windows和Mac上)我在Mac上做这件事有困难,因为大多数软件包都过时了。我开始尝试编写JINI代码,发现JNA对于Windows/linux来说更容易,尝试了洛可可,最后偶然发现Java-Object-C-Bridge是一个简单而轻巧的选项,可以使用JNA在Mac上调用Coca函数

我想把目标函数称为C函数

NSWorkspace

- (BOOL)getInfoForFile:(NSString *)fullPath
       application:(NSString * _Nullable *)appName
              type:(NSString * _Nullable *)type
我已经能够让JNA和Java-Object-C-Bridge成功地用于其他函数调用。但是我不能调用我需要的函数,因为我不知道如何配置指向要传递到代码中的指针的指针

    Client client = Client.getInstance();
    Proxy client.sendProxy("NSWorkspace", "sharedWorkspace");
    ...
    Boolean rtn = workspace.sendBoolean("isFilePackageAtPath:", file);
    ...
    rtn = workspace.sendBoolean("getInfoForFile:", file, 
       appPtrPtr, typePtrPtr);
对“isFilePackageAtPath”的调用工作顺利。但是我不能得到我真正想要使用的函数,因为我不知道如何声明和初始化appPtrPtr或typePtrPtr。我尝试过制作指针对象,尝试过制作指向指针和字符串的指针对象。尝试了JNA的PointerByReference类。我在一个动态库中崩溃,找不到任何文档或示例。我理解这个问题,objective-C函数需要为这些字符串分配空间,并以某种方式将指向该字符串的指针传递给我,以便我可以复制该字符串并释放其内存。很棘手,因为Java不是这样工作的

# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fff8cef7732, pid=63746, tid=6915
#
# JRE version: Java(TM) SE Runtime Environment (8.0_66-b17) (build 1.8.0_66-    b17)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.66-b17 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# C  [libsystem_c.dylib+0x1732]  strlen+0x12
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again

建议?例子?我希望这个软件包的开发者“SteveHannah”能够加入进来

PointerByReference
绝对是JNA的答案。调用
getValue()
获取“返回的”指针之后,对其进行调用。PointerByReference不能用于此桥包。我最终放弃了使用Java-Object-C-Bridge代码。我用XCode编写了自己的DynamicLibrary,可以从JNA调用,而且运行良好。它比任何东西都轻,除了直JNI。因为我写了自己的图书馆,所以我没有把它和参考文献一起传回去。