只给你第一个例子,也就它最复杂:
[DllImport("dllname.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
private static extern AlignAndCluster CreateClass(ref string refImagePath, ref string sub_fn, string savePath, string saveFile, Login dataValue);
dllname.dll
是你导出函数的相对路径,CallingConvention
是调用约定,你要明确调用约定、由于你传的是 ascii 字符串,要指定字符集。如果是返回值结构体指针,就对应的结构体,如果是参数,就加一个 ref ,其他如果因知识不足自行搜索科普。
AlignAndCluster* C#返回我定义的是个指针。且这个类里面不单单是个数据模板,里面还夹杂着C++的业务处理函数。调用函数的时候总是返回如下错误:
网上试了几个解决方案,未能成功。
按您这个,除了返回的是IntPtr外。也是报上述错误信息。
@前有悬崖,后有猛虎: 我之前不是回过你的问题吗?不能含有类,自定义的也不行,只能参数含有纯 C 的结构体……
非常感谢各位积极参与!
– 前有悬崖,后有猛虎 1年前