chen_zhi_heng
忧灵
采纳率84.6%
2015-04-11 02:06 阅读 2.0k

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    oyljerry oyljerry 2015-04-11 02:28

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

    点赞 评论 复制链接分享
  • danielinbiti danielinbiti 2015-04-11 02:24

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

    点赞 2 评论 复制链接分享
  • danielinbiti danielinbiti 2015-04-11 02:26

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

    点赞 2 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2015-04-11 02:38

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

    点赞 2 评论 复制链接分享

相关推荐