首页 新闻 会员 周边

【追问】C#调用C++库问题

0
悬赏园豆:80 [已解决问题] 解决于 2023-05-06 13:41


请问如何将上述C++库定义函数,C#应该如何转义为可执行函数,谢谢。

前有悬崖,后有猛虎的主页 前有悬崖,后有猛虎 | 初学一级 | 园豆:92
提问于:2022-09-29 11:22

非常感谢各位积极参与!

前有悬崖,后有猛虎 1年前
< >
分享
最佳答案
0

只给你第一个例子,也就它最复杂:

[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 ,其他如果因知识不足自行搜索科普。

收获园豆:80
寂静的羽夏 | 小虾三级 |园豆:1803 | 2022-09-29 11:40

AlignAndCluster* C#返回我定义的是个指针。且这个类里面不单单是个数据模板,里面还夹杂着C++的业务处理函数。调用函数的时候总是返回如下错误:
网上试了几个解决方案,未能成功。

前有悬崖,后有猛虎 | 园豆:92 (初学一级) | 2022-09-29 13:53

按您这个,除了返回的是IntPtr外。也是报上述错误信息。

前有悬崖,后有猛虎 | 园豆:92 (初学一级) | 2022-09-29 13:55

前有悬崖,后有猛虎 | 园豆:92 (初学一级) | 2022-09-29 13:58

@前有悬崖,后有猛虎: 我之前不是回过你的问题吗?不能含有类,自定义的也不行,只能参数含有纯 C 的结构体……

寂静的羽夏 | 园豆:1803 (小虾三级) | 2022-09-29 18:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册