问题描述
- 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