我有一个用C#编程的DLL,我将其转换为COM对象,以便在VB6应用程序中使用。有几个定义为long
类型的方法和属性,当在VB6中访问时,最终显示为“不支持的变体类型”。然后我注意到一个在C#中定义的函数:
void Load(long firstNumber, int firstCheckDigit, long lastNumber , int lastCheckDigit)
在我的VB6对象浏览器中显示为:
Sub Load(firstNumber As <Unsupported variant type>, firstCheckDigit As Long, lastNumber As <Unsupported variant type>, lastCheckDigit As Long)
显然,关于这种转换的一些事情是将C#int
类型转换为VB6 Long
类型,这对我来说不是问题。但是,在C#和VB6中,我确实需要firstNumber
和lastNumber
变量为long
。由于输入的某些值的大小,后端上的变量不能为int
。有没有办法做到这一点?或者是DLL端的长类型与COM对象不兼容?
答案 0 :(得分:6)
这是准确的,VB6没有64位整数类型。
您需要使用 int 或 double 来容纳它。后者当然不愉快,但你确实得到15位数。
答案 1 :(得分:0)
http://msdn.microsoft.com/en-us/library/aa263420%28VS.60%29.aspx&lt; - VB6数据类型
http://www.completecsharptutorial.com/basic/data-types.php&lt; - c#数据类型
未来的参考。 :)