本帖最后由 left6081 于 2014-11-07 14:20:48 编辑

解决方案 »

  1.   

    不用管头文件
    搜一搜:C#调用C++dll就行了.h文件顶多是定义函数名和参数类型的时候参考一下
    如果你本来就知道dll里有些什么函数,根本不用管它
      

  2.   

    直接搜:
    c#调用dll
    就好
    不管是c++的也好,vb的也好,java的也好,都是一样的调用方法
    只是C#自己的dll调用方式不同,可以静态调用而已
      

  3.   

    对于define定义的在Net中直接const声明,类型根据具体的数据决定
    对于指针的处理如果是非数组的话可以直接用整数或者intptr处理
    对于类数组的访问指针可以使用byte[] 结合属性的声明方式来使用具体的还是希望自己能查阅下微软的文档,MSDN中是有明确的说明的,而且还有相关的技术文章~ 
    这里不列出了,直接bing下就出来了,作为net开发人员,我的觉的并是个很不错的搜索工具
      

  4.   

    #define PDC_TRIGGER_RANDOM_MANUAL (0x07 << 24)这个就在C#中定义一样的值就可以。 int PDC_TRIGGER_RANDOM_MANUAL = 0x07 << 24;
      

  5.   

    调用c的dll,一般使用platform invoke. 可以搜索它。下面文章是msdn上介绍它的。http://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx
      

  6.   

    同意楼上
    先了解 P/Invoke的概念
    重点学习DllImport的使用方法
      

  7.   

    把所有宏定义改成静态常量。CPP中对于指针操作可以忽视。对于函数而言,指针参数几乎都可以使用IntPtr代替。
      

  8.   

    看来lz有是个身陷苦海的人啊。
    首先,要把C的代码打包成dll的形式。
    其次,在C#里定义C里申明的函数和类型。 &DetectNumInfo,这个结构体使用IntPtr来定义
    &nErrorCode这个可以使用out参数来定义。
      

  9.   


    是所有的指针都可以用intPtr么?
    char*也行么?
      

  10.   

    char*用string或者StringBuilder好。