none
请问这个c++怎么写成自己的c#方法? RRS feed

  • 问题

  • CHECK_API int checkMsg(const char *buf, int buflen, int init);

    CHECK_API int getPackageOK();
    CHECK_API int getPackageErr();

    CHECK_API int getErrordataLen();
    CHECK_API const char* getErrordata();

    CHECK_API const char* getRemain();
    CHECK_API int getRemainLen();

    我只会写到这,后面怎么

     [DllImport(@"check.dll")]
           private extern static int checkMsg(const char *buf, int buflen, int init);


    please verify my account


    • 已编辑 lctk 2017年3月29日 0:17
    2017年3月29日 0:16

答案

  • Hi lctk,

    感谢你在MSDN论坛发帖。

    >>"CHECK_API int checkMsg(const char *buf, int buflen, int init); "

    从这个函数的签名来看,形参里面有char *的类型,如果这个char* 指向是数组类型,你需要进行下面封装。

    value struct TraditionalDLL {  
       [DllImport("TraditionalDLL4.dll")]  
       static public void TakesAnArray(  
       int len,[MarshalAs(UnmanagedType::LPArray)]array<int>^);  
    };  
    

    MSDN有正对每种不同的类型,都给了相关的方法。

    https://msdn.microsoft.com/en-us/library/2x8kf7zx.aspx

    Best Regards,

    Hart



    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 lctk 2017年5月27日 23:39
    2017年3月29日 7:47
    版主

全部回复

  • Hi lctk,

    感谢你在MSDN论坛发帖。

    >>"CHECK_API int checkMsg(const char *buf, int buflen, int init); "

    从这个函数的签名来看,形参里面有char *的类型,如果这个char* 指向是数组类型,你需要进行下面封装。

    value struct TraditionalDLL {  
       [DllImport("TraditionalDLL4.dll")]  
       static public void TakesAnArray(  
       int len,[MarshalAs(UnmanagedType::LPArray)]array<int>^);  
    };  
    

    MSDN有正对每种不同的类型,都给了相关的方法。

    https://msdn.microsoft.com/en-us/library/2x8kf7zx.aspx

    Best Regards,

    Hart



    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 lctk 2017年5月27日 23:39
    2017年3月29日 7:47
    版主
  • 有个PInvoke helper 可以帮助生成C#调用

    http://www.pinvoker.com/Product.aspx


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2017年3月29日 9:59