JNI里面使用指针应该没有什么问题,我一般的操作都没有问题。但是你还是在JVM的环境中,好像对内存的申请有一定限制,我写的一个dll中
就出现了初始化一个_variant_t的时候
_variant_t t = _variant_t(str);//str长度有200k左右
出现了
#
# An EXCEPTION_STACK_OVERFLOW exception has been detected in native code outside the VM.
# Program counter=0x8f84c37
#
就出现了初始化一个_variant_t的时候
_variant_t t = _variant_t(str);//str长度有200k左右
出现了
#
# An EXCEPTION_STACK_OVERFLOW exception has been detected in native code outside the VM.
# Program counter=0x8f84c37
#
请问,那行参中的指针变量你怎么处理?因为java中并没有指针?
现在问题是,许多形参都是指针,不知用java该怎么处理
char*就可以啦,我还是没有搞懂你要完成的东西,你举个例子吧
......
}SLKDF是结构类型,
还有另外一个c函数:void dwl(SLKDF *sf,....) {
......
}都是对结构的修改,包扩开辟的空间加大之类的原先在c中的main函数形如:
main() {
SLKDF *lxk =malloc(SLKDF);
dwl(lxk,....);
weo(lxk,....);
write( x,lxk, x); /* socket通信,要用到lxk */
...
}
现在用java怎么实现?
最终达到的目的是,既把实参传递进去,又能把其中改变放映出来(即指针所能达到的目的)。
谢谢!
如果有太多类似的东西你可以作个c(c++)2java通信协议。
说真的,我对java可以说根本不熟。至于通信协议那更不知怎么回事。我想这样做下来,会不会太复杂了?完全用java写客户端,我想用的时间太长这是其一,
其二,要java和c之间通信,用socket但是现在遇到的问题是,有些情况还不清楚,比如java-c之间的socket通信是否那么方便?java中的一些类型和c中的一些类型长度不一,现在要求的是一次传出一定格式的内存区域(根据我现在有的已经用c写好的客户端程序得知)。
有没有什么好办法?