Java 使用JNI(在Mac上)在本机调用中对位置0x0的内存访问无效
我有两个eclipse插件间接调用一个本机框架:插件A加载libA.jnilib,插件B加载libB.jnilib,然后动态调用libA.jnilib和libB.jnilib 加载相同的框架并调用其中的函数Java 使用JNI(在Mac上)在本机调用中对位置0x0的内存访问无效,java,java-native-interface,shared-libraries,native,Java,Java Native Interface,Shared Libraries,Native,我有两个eclipse插件间接调用一个本机框架:插件A加载libA.jnilib,插件B加载libB.jnilib,然后动态调用libA.jnilib和libB.jnilib 加载相同的框架并调用其中的函数 pluginA或pluginB可以单独工作,但当它们同时运行时,pluginB将在框架调用时崩溃,并出现错误-“位置0x0的内存访问无效”。(在本机代码中,我可以发现框架中的函数指针解析不为NULL,但调用它后失败)我们需要两个插件一起工作,但我们没有权利更改插件的代码,因为它是遗留代码。所
pluginA或pluginB可以单独工作,但当它们同时运行时,pluginB将在框架调用时崩溃,并出现错误-“位置0x0的内存访问无效”。(在本机代码中,我可以发现框架中的函数指针解析不为NULL,但调用它后失败)我们需要两个插件一起工作,但我们没有权利更改插件的代码,因为它是遗留代码。所以我的问题是,从技术上讲,我有没有办法让pluginB成功调用框架?你可以将库文件复制到另一个名称,然后在B中使用该名称。这正是我的第一个想法。但是,即使我将x.framework改为y.framework,问题仍然存在。我认为这行不通。加载本机库时,绑定到库中的符号。此外,在相同的场景中,这两个插件在win上运行良好。复制dll本机库并将其加载到自己的插件中,两个dll都将加载到内存中,并且通过jni的本机调用成功