/////IA.h//导出抽象类定义
class IA
{
public:
virtual void add(int a, int b, int &c) = 0; //求和函数,输出结果c
}//导出API函数extern "C" __declspec(dllexport) IA *CreatClass(); //创建类实例extern "C" __declspec(dllexport) ReaseClass(IA *p); //销毁类实例
/////A.h//派生类
class A : public IA
{
public:
virtual void add(int a, int b, int &c); //基类中的纯虚函数,派生类中实现;
}
问题:
我先调用CreatClass()函数获得类指针,即可调用类中的函数add(int a, int b, int &c),这在C++中调用没有任何问题,但是这个动态库如何在C#中调用呢? 在C#中也可重写CreatClass()获得类指针,但如何调用类中的函数呢?
在网上查了好久,也没有什么结果,求各位大侠赐教,感激不尽啊!!!
class IA
{
public:
virtual void add(int a, int b, int &c) = 0; //求和函数,输出结果c
}//导出API函数extern "C" __declspec(dllexport) IA *CreatClass(); //创建类实例extern "C" __declspec(dllexport) ReaseClass(IA *p); //销毁类实例
/////A.h//派生类
class A : public IA
{
public:
virtual void add(int a, int b, int &c); //基类中的纯虚函数,派生类中实现;
}
问题:
我先调用CreatClass()函数获得类指针,即可调用类中的函数add(int a, int b, int &c),这在C++中调用没有任何问题,但是这个动态库如何在C#中调用呢? 在C#中也可重写CreatClass()获得类指针,但如何调用类中的函数呢?
在网上查了好久,也没有什么结果,求各位大侠赐教,感激不尽啊!!!
解决方案 »
- winform嵌入Excel
- ADO.NET的连接数据库的configure文件只能命名为app.config吗?
- com.ExecuteNonQuery()返回结果为-1
- 关于messagebox的问题
- GRID的自动列宽怎样按照HEADER自动设定
- 要处理此请求,必须在配置中注册 WebResource.axd 处理程序
- .net打包程序,怎样使程序成为启动项?
- 请高手帮忙,关于实现如VS.Net中数据适配器配置向导中的查询分析器问题。
- C#中如何获得目录的路径
- 气愤,怎么搞的有些人提问不结贴。
- 访问网页一段时间出现web服务器繁忙
- 异常详细信息: System.Web.HttpException: 服务器太忙这个总是是那里的问题怎么解决
简单点就是C++动态库中有个函数,返回值是C++类指针,那么C#如何使用这个函数?
又如何使用该函数返回的类指针?
1、C++那把处理在.h头文件:IA* pIA=NULL;extern "C" __declspec(dllexport) void Initialize();
extern "C" __declspec(dllexport) void UnInitialize();extern "C" __declspec(dllexport) void add(int a, int b, int &c);在.cpp文件:void Initialize()
{
pIA=CreatClass();
}void UnInitialize()
{
if(pIA!=NULL)
{
ReaseClass(pIA);
pIA=NULL;
}
}void add(int a, int b, int &c)
{
pIA->add(a,b,c);
}
2、在C#这边处理: [DllImport("xxx.dll",EntryPoint="Initialize")]
void Initialize(); [DllImport("xxx.dll",EntryPoint="UnInitialize")]
void UnInitialize(); [DllImport("xxx.dll",EntryPoint="add")]
void add(int a, int b,ref int c)