怎么调用c++写的,带类的dll下面某个类下属的函数

shanyang1 2019-10-13 09:30:39
c++写了一个test.dll,内部有几个类分别是class A class B class C
类A,B,C下面分别有一些函数func1,func2,func3.....
怎么调用某个类下面的函数
我用的dllimport,入口点entrypoint怎么写?
...全文
122 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaniu 2020-03-07
  • 打赏
  • 举报
回复
c++/cli最好的解决办法
shanyang1 2020-03-06
  • 打赏
  • 举报
回复
谢谢各位,因为太复杂了,不准备用这种方法了,直接别的办法了
github_36000833 2019-10-14
  • 打赏
  • 举报
回复
C++函数导出基本上都是用基础类型。很少用到类的。

原因是不同的编译器,对类的具体实现可以不同。
由于布局的不同,C#并不能理解C++的类,甚至同是C++编译器,都会存在兼容的问题l。

在C#中调用C++类,不是说完全不可能,却是代价很高。不容易调试,不容易维护,得不偿失。
最可行的做法是,只用基础类型来导出C函数(这也是大部分Win32 API的做法)。
bloodish 2019-10-14
  • 打赏
  • 举报
回复
C++需要导出的API,用extern "C"包起来,按C的方法编译的方法名称不会带上参数信息. 关于怎么在托管代码中写非托管方法的声明,建议多了解一点PInovke的知识. 需要示例可以参考:Pinvoke.Net
秋的红果实 2019-10-13
  • 打赏
  • 举报
回复
类,只能对应C#的类 别的基础类型,网上搜下,如https://www.cnblogs.com/chuncn/archive/2011/12/20/2294096.html
CyberLogix 2019-10-13
  • 打赏
  • 举报
回复
吧这个类导出来,加上类的头文件,就可以使用 啊
shanyang1 2019-10-13
  • 打赏
  • 举报
回复
没有对应的,是用户自己建立的class,下面一堆的函数,比如a::func1,b::func2之类的
问题就在于,不知道entrypoint填什么好,我使用dependency工具去查这dll内部的函数,都是一堆问号开头的比如?a@func1@!@#$%这类的函数名,直接拷贝了填是可以但是会提示内存出错,怀疑是函数调用入口问题
不知道这类带有class的函数要怎么调用,以前用过都是直接import dll然后entrypoint写函数名就可以了,但是现在因为dll里面的函数都在每个类下面,就不知道entrypoint写啥好了

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧