我试图在C语言中创建一个对象并将其传递给jvm。
java对象是这样的:
package mypackage;
public class Blub {
public Blub(float a, float b) {
// storing the floats
}
}
C端初始化为:
jclass Blub_class = env->FindClass("mypackage/Blub");
jmethodID Blub_constructor = env->GetMethodID(Blub_class, "<init>", "(FF)V");
并使用以下内容创建实例:
jobject myInstance = env->NewObject(Blub_class, Blub_constructor, 0, 0);
在大多数情况下,它会失败-有时它会成功..? 真的很奇怪-如果它可以工作,那么它将在程序的整个运行过程中起作用,否则,它在首次执行NewObject时会失败
一些其他信息:
目前,我正在通过仅在jvm上调用仅具有原始参数的方法来解决此问题,效果很好。
我真的不知道我想念什么-.-我的工作有问题吗?
此外,它是如何失败的:
V [jvm.dll+0x14a6a6]
C [mylib.dll+0x1fae9] JNIEnv_::NewObject+0x59