//c++:Byte(unsigned   char)     ----    c#:System.Byte
        //c++:SHORT(short)              ----    c#:System.Int16
        //c++:WORD(unsigned   short)    ----    c#:System.UInt16
        //c++:INT(int)                  ----    c#:System.Int16
        //c++:INT(int)                  ----    c#:System.Int32
        //c++:UINT(unsigned   int)      ----    c#:System.UInt16
        //c++:UINT(unsigned   int)      ----    c#:System.UInt32
        //c++:LONG(long)                ----    c#:System.Int32
        //c++:ULONG(unsigned   long)    ----    c#:System.UInt32
        //c++:DWORD(unsigned   long)    ----    c#:System.UInt32
        //c++:DECIMAL                   ----    c#:System.Decimal
        //c++:BOOL(long)                ----    c#:System.Boolean
        //c++:CHAR(char)                ----    c#:System.Char
        //c++:LPSTR(char   *)           ----    c#:System.String
        //c++:LPWSTR(wchar_t   *)       ----    c#:System.String
        //c++:LPCSTR(const   char   *)  ----    c#:System.String
        //c++:LPCWSTR(const   wchar_t   *)      ----    c#:System.String
        //c++:PCAHR(char   *)   ----    c#:System.String
        //c++:BSTR              ----    c#:System.String
        //c++:FLOAT(float)      ----    c#:System.Single
        //c++:DOUBLE(double)    ----    c#:System.Double
        //c++:VARIANT           ----    c#:System.Object
        //c++:PBYTE(byte   *)   ----    c#:System.Byte[]
 
        //c++:BSTR      ----    c#:StringBuilder
        //c++:LPCTSTR   ----    c#:StringBuilder
        //c++:LPCTSTR   ----    c#:string
        //c++:LPTSTR    ----    c#:[MarshalAs(UnmanagedType.LPTStr)] string
        //c++:LPTSTR 输出变量名    ----    c#:StringBuilder 输出变量名
        //c++:LPCWSTR   ----    c#:IntPtr
        //c++:BOOL      ----    c#:bool  
        //c++:HMODULE   ----    c#:IntPtr   
        //c++:HINSTANCE ----    c#:IntPtr
        //c++:结构体    ----    c#:public struct 结构体{};
        //c++:结构体 **变量名   ----    c#:out 变量名   //C#中提前申明一个结构体实例化后的变量名
        //c++:结构体 &变量名    ----    c#:ref 结构体 变量名
                //c++:WORD      ----    c#:ushort
        //c++:DWORD     ----    c#:uint
        //c++:DWORD     ----    c#:int
 
        //c++:UCHAR     ----    c#:int
        //c++:UCHAR     ----    c#:byte
        //c++:UCHAR*    ----    c#:string
        //c++:UCHAR*    ----    c#:IntPtr
 
        //c++:GUID      ----    c#:Guid
        //c++:Handle    ----    c#:IntPtr
        //c++:HWND      ----    c#:IntPtr
        //c++:DWORD     ----    c#:int
        //c++:COLORREF  ----    c#:uint
 
        //c++:unsigned char     ----    c#:byte
        //c++:unsigned char *   ----    c#:ref byte
        //c++:unsigned char *   ----    c#:[MarshalAs(UnmanagedType.LPArray)] byte[]
        //c++:unsigned char *   ----    c#:[MarshalAs(UnmanagedType.LPArray)] Intptr
 
        //c++:unsigned char &   ----    c#:ref byte
        //c++:unsigned char 变量名      ----    c#:byte 变量名
        //c++:unsigned short 变量名     ----    c#:ushort 变量名
        //c++:unsigned int 变量名       ----    c#:uint 变量名
        //c++:unsigned long 变量名      ----    c#:ulong 变量名
 
        //c++:char 变量名       ----    c#:byte 变量名   //C++中一个字符用一个字节表示,C#中一个字符用两个字节表示
        //c++:char 数组名[数组大小]     ----    c#:MarshalAs(UnmanagedType.ByValTStr, SizeConst = 数组大小)]        public string 数组名; ushort
 
        //c++:char *            ----    c#:string       //传入参数
        //c++:char *            ----    c#:StringBuilder//传出参数
        //c++:char *变量名      ----    c#:ref string 变量名
        //c++:char *输入变量名  ----    c#:string 输入变量名
        //c++:char *输出变量名  ----    c#:[MarshalAs(UnmanagedType.LPStr)] StringBuilder 输出变量名
 
        //c++:char **           ----    c#:string
        //c++:char **变量名     ----    c#:ref string 变量名
        //c++:const char *      ----    c#:string
        //c++:char[]            ----    c#:string
        //c++:char 变量名[数组大小]     ----    c#:[MarshalAs(UnmanagedType.ByValTStr,SizeConst=数组大小)] public string 变量名;
     //c++:char* 变量名[]  ----- c#:string[] 或者通过List<string>.ToArray()
     
        //c++:struct 结构体名 *变量名   ----    c#:ref 结构体名 变量名
        //c++:委托 变量名   ----    c#:委托 变量名
 
        //c++:int       ----    c#:int
        //c++:int       ----    c#:ref int
        //c++:int &     ----    c#:ref int
        //c++:int *     ----    c#:ref int      //C#中调用前需定义int 变量名 = 0;
        //c++:*int      ----    c#:IntPtr
        //c++:int32 PIPTR *     ----    c#:int32[]
        //c++:float PIPTR *     ----    c#:float[]
     
 
        //c++:double** 数组名          ----    c#:ref double 数组名
        //c++:double*[] 数组名          ----    c#:ref double 数组名
        //c++:long          ----    c#:int
        //c++:ulong         ----    c#:int
       
        //c++:UINT8 *       ----    c#:ref byte       //C#中调用前需定义byte 变量名 = new byte();     
 
 
        //c++:handle    ----    c#:IntPtr
        //c++:hwnd      ----    c#:IntPtr
       
       
        //c++:void *    ----    c#:IntPtr       
        //c++:void * user_obj_param    ----    c#:IntPtr user_obj_param
        //c++:void * 对象名称    ----    c#:([MarshalAs(UnmanagedType.AsAny)]Object 对象名称
 
 
       
        //c++:char, INT8, SBYTE, CHAR                               ----    c#:System.SByte 
        //c++:short, short int, INT16, SHORT                        ----    c#:System.Int16 
        //c++:int, long, long int, INT32, LONG32, BOOL , INT        ----    c#:System.Int32 
        //c++:__int64, INT64, LONGLONG                              ----    c#:System.Int64 
        //c++:unsigned char, UINT8, UCHAR , BYTE                    ----    c#:System.Byte 
        //c++:unsigned short, UINT16, USHORT, WORD, ATOM, WCHAR , __wchar_t             ----    c#:System.UInt16 
        //c++:unsigned, unsigned int, UINT32, ULONG32, DWORD32, ULONG, DWORD, UINT      ----    c#:System.UInt32 
        //c++:unsigned __int64, UINT64, DWORDLONG, ULONGLONG                            ----    c#:System.UInt64 
        //c++:float, FLOAT                                                              ----    c#:System.Single 
        //c++:double, long double, DOUBLE                                               ----    c#:System.Double
                //Struct需要在C#里重新定义一个Struct
        //CallBack回调函数需要封装在一个委托里,delegate static extern int FunCallBack(string str);
 
        //unsigned char** ppImage替换成IntPtr ppImage
        //int& nWidth替换成ref int nWidth
        //int*, int&, 则都可用 ref int 对应
        //双针指类型参数,可以用 ref IntPtr
        //函数指针使用c++: typedef double (*fun_type1)(double); 对应 c#:public delegate double  fun_type1(double);
        //char* 的操作c++: char*; 对应 c#:StringBuilder;
        //c#中使用指针:在需要使用指针的地方 加 unsafe
 
        //unsigned   char对应public   byte
        /*
         * typedef void (*CALLBACKFUN1W)(wchar_t*, void* pArg);
         * typedef void (*CALLBACKFUN1A)(char*, void* pArg);
         * bool BIOPRINT_SENSOR_API dllFun1(CALLBACKFUN1 pCallbackFun1, void* pArg);
         * 调用方式為
         * [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
         * public delegate void CallbackFunc1([MarshalAs(UnmanagedType.LPWStr)] StringBuilder strName, IntPtr pArg);
         *
         *
         */

c#调用C++DLL参数对应的更多相关文章

  1. C#调用VC dll输出参数

    最近做项目需要把以前Vc写的程序整合到VS2005来,用c#写的,以前VC的动态连接库写好了,重写比较麻烦,让C#调用VC dll就好了.但碰到了一个问题:VC中作为输出参数的char*类型的变量应该 ...

  2. C# DllImport“调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配 ”

    调用外部dll时,出现如下问题 C# DllImport“调用导致堆栈不对称.原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配.请检查 PInvoke 签名的调用约定和参数与非托管的目标 ...

  3. C#调用C++ DLL类方法

    C++的优势在于高效灵活,C#的优势在于简单易用,两者结合起来对项目开发来说是件好事,而且C++不容易反编译,也保障了代码的安全性,如果一些核心算法使用C#编写,那么保密就是一个问题. C++生成的D ...

  4. C#调用C++ Dll

    现在项目基本都是旁边C++的哥们做好dll扔给我,然后我调用.好久之前晚上down了一份c#调用c++dll的方法,出处早已经遗忘.闲来无事,放上来好了.原作者看到后可以留言,我会把您链接放上的,帮了 ...

  5. 【JNI】OPUS压缩与解压的JNI调用(.DLL版本)

    OPUS压缩与解压的JNI调用(.DLL版本) 一.写在开头: 理论上讲,这是我在博客园的第一篇原创的博客,之前也一直想找个地方写点东西,把最近做的一些东西归纳总结下,但是一般工程做完了一高兴就把东西 ...

  6. c#调用c++ dll的几种类型(转)

    http://www.sosuo8.com/article-2012/dllleixingzhuanhuan.htm   在合作开发时,C#时常需要调用C++DLL,当传递参数时时常遇到问题,尤其是传 ...

  7. 非托管C++通过C++/CLI包装调用C# DLL

    项目中要给其它客户程序提供DLL做为接口,该项目是在.Net4.0平台下开发.终所周知.Net的各个版本之间存在着兼容性的问题,但是为了使用高版本运行平台的新特性,又不得不兼顾其它低版本平台客户程序的 ...

  8. C#中调用unmanaged DLL

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. c#调用c++ dll(二)

    当对c++几种调用方式有了解以后我们可以试着写个c++动态连接库了,我们现在来写个简单的c++求和函数并把它封装成dll,供以后的c#调用 我们写dll的时候,个人认为,要写就要把dll写好,写标准, ...

随机推荐

  1. Django URL传递参数的方法总结(转)

    1 无参数情况 配置URL及其视图如下: 1 2 3 4 (r'^hello/$', hello)   def hello(request): return HttpResponse("He ...

  2. Google Analytics与百度统计原理

    Google Analytics与百度统计的统计数据都是有差异的,而且差异非常大,其根本原因在于数据统计的原理和机制是不同的.下面分享一下两位博友李鑫和赵高欣对Google Analytics与百度统 ...

  3. Fireeye火眼公司发布报告,评论中国网络间谍活动

    2013年10月2日,Fireeye火眼公司发布报告,评论中国网络间谍活动-Fireeye(美 国火眼公司)发布报告<世界网络大战:理解网络攻击背后的国家意图>(World War C: ...

  4. python 程序构架

    http://blog.csdn.net/heyabo/article/details/8806176

  5. C++ STL算法系列2---find ,find_first_of , find_if , adjacent_find的使用

    一.find运算 假设有一个int型的vector对象,名为vec,我们想知道其中是否包含某个特定值. 解决这个问题最简单的方法时使用标准库提供的find运算: 1 // value we'll lo ...

  6. ESXi虚拟磁盘共享

    因为项目需要需要一个磁盘共享的环境. 最先想到用iSCSI,两个客户端挂载同一个远端盘:这样确实可行,但是感觉太繁琐,想到既然是虚拟机环境,可以设置虚拟磁盘共享. 于是网上一番搜罗,确实有人这个做过, ...

  7. web前端基础篇⑥

    LESS.①是一种拓展技术,基于css.②包含变量.混合.函数.运算.③简化css代码.降低维护成本④目前用的解析器(koala) 变量(值可变)@变量名:值步骤:①建立文件夹②建html和less两 ...

  8. LR接口测试手工脚本与验证脚本

    Action(){ char URL[250]; char mars_cid[30]; memset(URL,0,sizeof(URL)); memset(mars_cid,0,sizeof(mars ...

  9. JS中 obj.style.left 与 obj.offsetLeft 的区别

    1.obj.style.left 取得是字符串:28px; 而 obj.offsetLeft取得的值为数字 28: 2.obj.style.left 需要事先将left值写在HTML中,不能致谢在CS ...

  10. UVA 10801 Dij最短路(改模板)

    题意:有n个电梯,目的地是第K层(起点是第0层),给出每个电梯的速度,以及每个电梯能到达的层数,如果中途需要换电梯的话,时间需要+60,求到达目的地的最短时间: 思路:Dij求最短路.如果是另一条路比 ...