使用python的ctypes,可以指定一个采用类型的指针:classMETADATA(Structure):_fields_=[("classes",c_int),("names",POINTER(c_char_p))]对于JNR,它看起来像这样:publicstaticclassMetadataextendsStruct{publicMetadata(jnr.ffi.Runtimert){super(rt);}publicfinalStruct.Unsigned32classes=newStruct.Unsigned32();publicfinalStruct.Pointernam
根据here的图片这两个库都按照相同的原则工作。但我相信它们之间是有区别的。这是什么区别? 最佳答案 JNA使用反射来调用本地方法。JNR仅在运行时生成一次字节码,因此JNR比JNA运行得更快。查看代码生成here的示例 关于java-JNA和JNR有什么区别,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/44760972/
我使用VisualStudio2017编译了以下C++方法:extern"C"__declspec(dllexport)Info*__stdcallGetInfo(InfoProvider*infoProvider){static_assert(std::is_pod::value,"MustbePlainOldDatainordertobesafelycopiedbetweenDLLboundaries");Infoinfo=newInfo();Info->data1=infoProvider->data1;Info->data2=infoProvider->data2;return