zoukankan      html  css  js  c++  java
  • 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翻译,已经运行成功,希望对大家一些写类似代码有帮助。

    代码
  • 相关阅读:
    .NET Core微服务之基于Consul实现服务治理
    在 .NET 4.5 中反射机制的变更
    C#使用Emit构造拦截器动态代理类
    C#使用Emit生成构造函数和属性
    秒懂C#通过Emit动态生成代码
    C# 高性能 TCP 服务的多种实现方式
    Zookeeper的功能以及工作原理
    Eclipse智能提示及快捷键
    【Maven】Select Dependency 无法检索
    springboot的三种启动方式
  • 原文地址:https://www.cnblogs.com/pcmax/p/CSharpVCPlusCompatibility.html
Copyright © 2011-2022 走看看