none
C#调用C++DLL问题 RRS feed

  • 问题

  • 视频播放的PlayVIdeo.DLL是C++写的,通过将客户端的CStatic控件传到PlayVIdeo.DLL方法中,

    PlayVIdeo将视频流播放在指定的 CStatic控件上

    现在在C#环境中通过DllImport方式 调用 PlayVIdeo.DLL,将客户端的 Picturebox.handle传进去, 结果总是在这个地方报错,

    请问下,这种方式是不是有问题,能解决吗

    有什么其他解决方案吗


    少悲切,勿徘徊。。。

    2012年3月3日 9:17

答案

  • Hi makefor123,

    欢迎来到C#论坛。

    据我所知,如果C++中是Long类型,那么对应的C#类型应该是Int32。如果C++中是INT64类型,那么对应的C#类型应该是long或Int64。如果您的问题仍未解决,希望您能够为我们提供关于该问题的更详细的信息或代码,谢谢!

    祝您愉快。


    Bob Shen [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 makefor123 2012年3月9日 7:44
    2012年3月7日 8:30
    版主

全部回复

  • 是不是 不能用 Picturebox 替代 CStatic控件啊


    少悲切,勿徘徊。。。

    2012年3月3日 10:10
  • 不好意思,不是这个问题

    问题时 DllImport方式 中,第一个参数,C++ 是long类型,C#中 用Int64 会报错,说 “找不到  方法 入口点”

    用Int32的可以,但参数是视频DLL生成的,  的确是Int 64位,转为int 32位后,会变为 0

    很矛盾 

    帮想想办法   谢谢


    少悲切,勿徘徊。。。

    2012年3月3日 15:11
  • 請問DLL的宣告是unsigned long 嗎?

    不知用 uint 是否ok?

    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/



    2012年3月3日 23:09
  • 换Uint不行啊    值转为uint就变为0 了


    少悲切,勿徘徊。。。

    2012年3月4日 3:23
  • Hi makefor123,

    欢迎来到C#论坛。

    据我所知,如果C++中是Long类型,那么对应的C#类型应该是Int32。如果C++中是INT64类型,那么对应的C#类型应该是long或Int64。如果您的问题仍未解决,希望您能够为我们提供关于该问题的更详细的信息或代码,谢谢!

    祝您愉快。


    Bob Shen [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 makefor123 2012年3月9日 7:44
    2012年3月7日 8:30
    版主
  • 嗯   应该是这样的   ,

     怀疑调用C++ dll接口那出了问题, 在C++中 调这个接口,生成的是 32位的整形

    用C#调用 生成就是 64位的


    少悲切,勿徘徊。。。

    2012年3月8日 6:06
  • 不纠结了, 说是需要在 调用后对值做个 什么转换,

    不知道是什么转换, 换个方法了  ,结贴


    少悲切,勿徘徊。。。

    2012年3月9日 7:44