我有一个用 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 类型,这对我来说不是问题。但是,我确实需要 firstNumberlastNumber 变量在 C# 和 VB6 中都是 long。由于输入的某些值的大小,后端的变量不能是 int。有没有办法做到这一点?或者 DLL 端的 long 类型是否与 COM 对象不兼容?

最佳答案

这是准确的,VB6 没有 64 位整数类型。

你需要用 int 或 double 来容纳它。后者当然令人不快,但您确实从中得到了 15 位数字。

关于c# - C# 编程 COM 对象中的长类型在 VB6 中显示为不支持的变体类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19688063/

10-13 06:31
查看更多