请问我在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);

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

3个回答

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

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复Learn_change_myself: com看你是不是需要传出参数了,传入的话,也可以用stringbuilder也可以用lptstr
接近 2 年之前 回复
Learn_change_myself
Learn_change_myself 谢谢大佬,那么最后一个参数这么转换行吗?
接近 2 年之前 回复

最后一个参数是IN-OUT吗?

Learn_change_myself
Learn_change_myself 最后一个小参参只需传入就行了^_^
接近 2 年之前 回复

你这种方式必须要采用动态加载参数了 因为看你的问题 好像你的参数不是固定的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐