Tag: static libraries

从robovm项目创建iOS静态库(JNI中的BAD_ACCESS)

我有大量的Java代码(只有计算函数,没有UI),我想在iOS中作为静态库重用。 我的方法是使用robovm并按照非官方的方式创建一个静态库,在robovm论坛的两篇文章中描述: 1基本方式和2精炼版本 尝试按照描述完全按照步骤操作,在使用脚本创建共享库,在Xcode中链接库(.a)并成功构建项目之后,我不幸遇到了问题。 在运行期间,我看到我的C ++桥代码被调用,但JNI回调到库失败并带有BAD_ACCESS。 例如,以下行崩溃: jclass myJavaClass = jniEnv->FindClass(“com/test/robovm/bridge/MyJavaRoboCode”); 在这个方法中: void callSomethingInJava(const char* arg) { // To call into java from your native app, use JNI Env* rvmEnv = rvmGetEnv(); JNIEnv* jniEnv = &(rvmEnv->jni); jclass myJavaClass = jniEnv->FindClass(“com/test/robovm/bridge/MyJavaRoboCode”); jmethodID myJavaMethod = jniEnv->GetStaticMethodID(myJavaClass, “callJava”, “(Ljava/lang/String;)V”); jstring argAsJavaString = jniEnv->NewStringUTF(arg); jniEnv->CallStaticVoidMethod(myJavaClass, myJavaMethod, argAsJavaString); } 如果我尝试直接使用rvmXX方法而不是JNI并尝试访问“Java”类中的某些内容,情况也是如此。 […]

是否可以通过JNI将静态库链接到Java?

是否可以构建HelloWorld.lib并使用JNI将其加载到Java应用程序? 或者它只适用于共享库? 我无法在JNI文档中找到明确的答案,没有提到“静态库”。

将静态库与JNI链接

Java 8之前的Java版本要求本机代码位于共享库中,但我已经阅读了Java 8,可以将静态链接库与JNI一起使用。 我搜索了一些例子,却找不到任何例子。 如何将JNI库静态链接到我的java应用程序?