vb6 0-vb.net二进制数组能传给C++DLL的variant变体型吗?

问题描述

vb.net二进制数组能传给C++DLL的variant变体型吗?

调用C++生成的dll,dll接口是variant变体型,vb传一个二进制数组给它,vb6.0能够正常接收,.net提示类型不一致,请问是什么原因?
有什么解决办法吗?DLL是UDP送信的,有很多内存操作,很难修改。用VB也很难实现,现在非常希望能够解决这个问题。
感谢。

解决方案

最好用C封装dll。
或者封装com接口

解决方案二:

这得看C++怎么定义的。你可以在VB.NET中定义一个一样的结构体,结构体内类型对应。最后用Marshal.GetNativeVariantForObject转了试试。
调DLL复杂的类型还是的自己试试,情况太多。

解决方案三:

另外如果VB6.0可以,看一下定义的类型,特别是Integer和long,vb6里面的long对应vb.net中的integer

解决方案四:

这需要深入到Variant类型的存储结构内部
http://en.wikipedia.org/wiki/Variant_type
理论上来说,你可以通过byte数组构造兼容的Variant,但是要看接收程序具体解释为什麽数据类型。

时间: 2024-10-25 19:02:10

vb6 0-vb.net二进制数组能传给C++DLL的variant变体型吗?的相关文章

c++-.NET2012 object型的byte数组,作为参数,传给C++DLL封装的一个变体类型

问题描述 .NET2012 object型的byte数组,作为参数,传给C++DLL封装的一个变体类型 VB2012: 调用C++DLL,传入参数为一个二进制byte数组. c++: 接收参数类型为variant 报类型不一致错误. 请问.net能不能把byte型char数组,传给C++dll中封装的变体类型参数? 注:vb6可以实现.2012报错. 解决方案 byte型char数组是什么?byte就是byte,char就是char

无法运行VB6.0精简版软件

问题描述 无法运行VB6.0精简版软件 无法运行VB6.0精简版软件,出现:不能MSVBVM60.DLL注册的对话框,这是怎末回事,求解 解决方案 在网上下载Msvbvm60.dll,下载后拷贝到windows/system32下 解决方案二: 上面的答案有帮助吗?如果还有问题,请提出来,如果对答案满意,请顶一下,并标记为采纳答案,谢谢!

Vb6.0 Variant 在 Vb.net 中 Object 的问题

问题描述 Vb6.0代码如下:ConstDATASIZE=459DimglngEnrollDataAsVariantDimvniiAsLongDimvByte()AsByteastrBuff=Rs.Fields("TEMP")'2进制字段vByte=astrBuffForvnii=0ToDATASIZE-1glngEnrollData(vnii)=vByte(vnii*5+1)glngEnrollData(vnii)=glngEnrollData(vnii)*256+vByte(vni

Vb6.0 Variant 在 Vb.net 中 Object 赋值问题

问题描述 Vb6.0代码如下:ConstDATASIZE=459DimglngEnrollDataAsVariantDimvniiAsLongDimvByte()AsByteastrBuff=Rs.Fields("TEMP")'2进制字段vByte=astrBuffForvnii=0ToDATASIZE-1glngEnrollData(vnii)=vByte(vnii*5+1)glngEnrollData(vnii)=glngEnrollData(vnii)*256+vByte(vni

VB6.0中For语句的两种用法,如何用第二种用法遍历一个数组?

问题描述 VB6.0中For语句的两种用法,如何用第二种用法遍历一个数组? VB6.0中For语句的两种用法,如何用第二种用法遍历一个数组? 解决方案 正序 for i = lbound(arr) to ubound(arr) arr(i) next 逆序 for i = ubound(arr) to lbound(arr) step -1 arr(i) next 解决方案二: 一个加密解密函数 for vb6.0!VB6.0中的编译预处理--#IF语句

vs2010-vs2015的VB与VB6.0的VB有什么区别?

问题描述 vs2015的VB与VB6.0的VB有什么区别? 听说vs可以写C程序和VB程序,我果断把原来的VB6.0和VC卸了.安装了最新的vs2015.可是在编VB程序时,我发现vs里面的VB跟VB6.0的VB的语法相差很大.请问他们都是同一种编程语言吗? 解决方案 几乎可以说是不同的一门语言了,VB是面向过程 模块化的,后来的vb也升级成了vb.net了,要运行于.net虚拟机之中.类似于JAVA. 好处就是不管那一台机,只要能装上.net的运行vb.net的程序都不会产生兼容性问题.无论你

急!VC2005做的控件用在VB里 直接运行可执行 关闭时会出内存不能读的错误,在VC2005 vc6.0 vb6.0 里都没错 c#里关的时候也会出错

问题描述 急!有没有人遇到过这种情况,VC.net做的ocx控件在vb,net里应该是可用的,在vb6.0没有错应该不是接口的问题,在一台电脑上出0x00000000指令引用0x00000000内存不能读再别的电脑上就是其他地方的指令引用其他内存不能读在cmd里运行是指令引用内存不能写的的错误只是直接运行debug或release下的可执行程序然后关闭的时候会出错在运行状态下关闭不会有错这是怎么回事啊,有人可以帮忙解决一下吗?谢谢! 解决方案 解决方案二:在线等--知道的人指点一下啊

vb编程-vb6.0程序 产生【10,37】之间的随机整数

问题描述 vb6.0程序 产生[10,37]之间的随机整数 产生[10,37]之间的随机整数 写出下列运算对应的vb表达式 求解(最好详细点 谢谢) 还想求个专门讨论vb的q群 或者论坛 解决方案 val(Rnd(37-10))+10 解决方案二: 如包含37,则如下写 val(Rnd(38-10))+10 解决方案三: val改成CInt,自己试试

从VB6到VB.NET的变化综述 (转)

随着Microsoft .NET平台的发布,Visual Basic开始成为一种完全面向对象的语言,简称为VB.NET.虽然有了一些根本性的变化,开发者从VB6到VB.NET的学习热情依然相当高,即使对于有经验的编程人员也是如此.本文中,我将列出Visual Basic语言中的变化,并在适当的地方举例说明.这里所列出的可能不完全,但是已经包括了大部分的功能.如果你是一个想要转到VB.NET上去的 VB程序员,这篇文章就一定要读一读. ASP.NET Beta 1版本可以从http://www.a