如何提供语言中立的数据类型

时间:2014-10-14 14:42:45

标签: c++ windows visual-c++ com

我一直在研究COM一段时间了,我理解COM如何通过使用众所周知的二进制接口提供langugae中性代码,但直到现在我还没有得到COM如何提供语言neutrak数据类型,例如, COM组件的实现语言是用C ++编写的,COM组件的使用者是用Java编写的,并假设我们有类似的接口函数

int sum(int x, int y)

因此,C ++中的整数对象与Java中的整数对象不同,那么COM如何实现中性数据类型?

1 个答案:

答案 0 :(得分:2)

COM定义它支持的类型。因此int(例如VT_I4)是小端格式的4字节整数类型。想要支持COM并使用大端(例如)的语言必须首先将其转换为小端。

字符串被定义为长度为前缀的字符数组,所以使用其他格式的语言......你猜对了,必须转换为COM字符串类型。

数组定义了一个复杂的SafeArray类型,你想要一个数组,你必须构造一个Safearray来传递COM接口。

这与网络编程没什么不同 - 如果你曾经见过函数hton()和ntoh()在客户端机器使用的格式和由发明数据格式的人定义的网络格式之间进行转换的函数套接字使用,你会发现一种常见的格式很常见。