快速业务通道

汇集(Marshaling) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25

汇集(Marshaling)

时间:2007-05-29 yycnet.yeah.net yyc译

“汇集”(Marshaling)是指将一个函数自变量从它原始的二进制形式转换成与语言无关的某种形式,再将这种通用形式转换成适合调用函数采用的二进制格式。在前面的例子中,我们调用了MessageBox()函数,并向它传递了两个字串。MessageBox()是个C函数,而且Java字串的二进制布局与C字串并不相同。但尽管如此,自变量仍获得了正确的传递。这是由于在调用C代码前,J/Direct已帮我们考虑到了将Java字串转换成C字串的问题。这种情况适合所有标准的Java类型。下面这张表格总结了简单数据类型的默认对应关系:

Java C

byte BYTE或CHARshort SHORT或WORDint INT,UINT,LONG,ULONG或DWORDchar TCHARlong __int64float Floatdouble Doubleboolean BOOLString LPCTSTR(只允许在OLE模式中作为返回值)byte[] BYTE *short[] WORD *char[] TCHAR *int[] DWORD *

这个列表还可继续下去,但已很能说明问题了。大多数情况下,我们不必关心与简单数据类型之间的转换问题。但一旦必须传递用户自定义类型的自变量,情况就立即变得不同了。例如,可能需要传递一个结构化的、用户自定义的数据类型,或者需要把一个指针传给原始内存区域。在这些情况下,有一些特殊的编译引导命令标记一个Java类,使其能作为一个指针传给结构(@dll.struct引导命令)。欲知使用这些关键字的细节,请参考产品文档。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号