c++写了一个test.dll,内部有几个类分别是class A class B class C
类A,B,C下面分别有一些函数func1,func2,func3.....
怎么调用某个类下面的函数
我用的dllimport,入口点entrypoint怎么写?
没有对应的,是用户自己建立的class,下面一堆的函数,比如a::func1,b::func2之类的
问题就在于,不知道entrypoint填什么好,我使用dependency工具去查这dll内部的函数,都是一堆问号开头的比如?a@func1@!@#$%这类的函数名,直接拷贝了填是可以但是会提示内存出错,怀疑是函数调用入口问题
不知道这类带有class的函数要怎么调用,以前用过都是直接import dll然后entrypoint写函数名就可以了,但是现在因为dll里面的函数都在每个类下面,就不知道entrypoint写啥好了
c++/cli最好的解决办法
吧这个类导出来,加上类的头文件,就可以使用 啊
C++需要导出的API,用extern "C"包起来,按C的方法编译的方法名称不会带上参数信息.
关于怎么在托管代码中写非托管方法的声明,建议多了解一点PInovke的知识.
需要示例可以参考:Pinvoke.Net
C++函数导出基本上都是用基础类型。很少用到类的。
原因是不同的编译器,对类的具体实现可以不同。由于布局的不同,C#并不能理解C++的类,甚至同是C++编译器,都会存在兼容的问题l。
在C#中调用C++类,不是说完全不可能,却是代价很高。不容易调试,不容易维护,得不偿失。最可行的做法是,只用小蜜蜂论坛顶帖机基础类型来导出C函数(这也是大部分Win32 API的做法)。