猿问

请问我在c#中用动态链接库的方式引入一个c++dll,入参类型像这样转换是否正确?

请问我在c#中用动态链接库的方式引入一个c++dll,在调用dll中的接口时,入参类型像这样转换是否正确?


依照这个dll的接口文档描述,它这个接口的入参是这样的:
long OltpTransData(unsigned long msgType,unsigned long packageType,unsigned long packageLength,char *str,LPTSTR com);

            c#代码中的引入,我是这么写的:
    [DllImport("OltpTransIc1701.dll", SetLastError = false)]
    public static extern long OltpTransData(long msgType, long packageType, long packageLength, ref string str, [MarshalAs(UnmanagedType.LPTStr)] string com);

            请问这么转换入参类型是否正确?


慕田峪4524236
浏览 734回答 2
2回答

蝴蝶不菲

C++的long在有的编译器里相当于int,你可以用sizeof(long)看下unsigned long对应C#的ulong和uintchar *str用StringBuilder

波斯汪

你这种方式必须要采用动态加载参数了 因为看你的问题 好像你的参数不是固定的
随时随地看视频慕课网APP
我要回答