• C#与VC++的一些结构体调用


       很久没有写些东西了,发现不写很久就会忘记一些技巧性的东西,然后又要翻阅一堆堆的代码区查,还要试,很囧~~~~

      前阵在做一个海外项目时第三方合作厂家一起开发个文件传送的东东,NND,他们只会用VC++,居然说COM也不会玩,晕死,让我玩找窗口的游戏,这年头居然还有这样的人,真的是远古时代的。

      下面是他们给我的VC++调用DEMO,要我用.NET来实现,真的很看得起我

    代码

      里面自定义了一个FileTransferCommand结构体,还导入了一个Windows的COPYDATASTRUCT结构体,这TMD .NET里面根本没,都是什么什么.H文件里面的。

    代码

    typedef struct tagCOPYDATASTRUCT {
      DWORD dwData; 
      DWORD cbData; 
      PVOID lpData; 
    } COPYDATASTRUCT;

      这是Winuser.h里面定义的,要用.NET实现必须把这些结构体翻译成VC++看的懂的,因为VC++里面就是指针、位、字节什么的,它就没有管你CLR里面struct什么样子,因为在C/C++中struct只是一个简单的数据集合,甚至C的Struct不能包含函数的,一些C++代码也难看见在Struct里面写函数的,而.NET里面Struct相对很少使用,因为Struct在.NET中很像一个Class了,没有太多约束。所以导致了Struct的失真。其实说白了就是.NET对结构体的序列化、C++是否可成功反序列化的问题。

      下面是我对上面代码的.NET翻译,已经运行成功,希望对大家一些写类似代码有帮助。

    代码
  • 相关阅读:
    反射泛型方法
    Redis令牌桶限流
    laravel中间件的使用
    Laravel-权限系统
    Laravel 即时应用的一种实现方式
    laravel实现多模块
    laravel5+ElasticSearch+go-mysql-elasticsearch MySQL数据实时导入(mac)
    swoole视频直播
    开发SSO单点登录需要注意的问题
    进程、线程、协程三者之间的联系与区别
  • 原文地址:https://www.cnblogs.com/pcmax/p/CSharpVCPlusCompatibility.html
Copyright © 2020-2023  润新知