各位大侠好,我想请问一个JNA的SOCKET问题问题源于java对DLL的调用.DLL是C++写的,我使用JNA技术
DLL中函数DUABind的返回值是SOCKET*类型,它是其他函数的输入参数,但是其他类型需要SOCKET.我用IntByReference变量得到了SOCKET*的值,但不知道如何得到相应的SOCKET值,其他函数不能调用了,另外我在JAVA中直接用SOCKET("192.168.0.87",1521)创建SOCKET直接带入需要SOCKET类型的函数,报错说函数不支持这种类型,是不是JAVA和C++里的SOCKET还不一样呢?请大家指点一下,非常感谢.
DLL中函数DUABind的返回值是SOCKET*类型,它是其他函数的输入参数,但是其他类型需要SOCKET.我用IntByReference变量得到了SOCKET*的值,但不知道如何得到相应的SOCKET值,其他函数不能调用了,另外我在JAVA中直接用SOCKET("192.168.0.87",1521)创建SOCKET直接带入需要SOCKET类型的函数,报错说函数不支持这种类型,是不是JAVA和C++里的SOCKET还不一样呢?请大家指点一下,非常感谢.
则:由IntByReference变量(相当于:SOCKET*的值)得到int(相当于:得到相应的SOCKET值),可用:
IntByReference变量.getValue()
然后将这个int(相当于:得到相应的SOCKET值),传送给:其他函数的输入参数。
这个是简单的。
只是:如何将这个得到相应的SOCKET值,转变成JAVA中的网络通信用的那个SOCKET类的对象,还没有好的想法[很可能就是不可行的],即无法转换的。
这个试过了,不行呢.
我想在C++下面把原来的dll再封装一遍,再弄个新的DLL,输入参数改成SOCKET,一了百了,顺便有几个结构体指针的指针的也给改了,您看行不?