[英]using managed c++ dll in c#
**unmanaged class**
這是非托管類聲明
#ifdef EXPORT_CLASS
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
public class DLL_EXPORT cppclass
{
private:
string x;
public:
cppclass();
~cppclass();
string native();
};
**UNMANAGED CLASS DEFINITION**
這是非托管類定義
cppclass::cppclass()
{
x="hello";
};
cppclass::~cppclass()
{
};
string cppclass::native()
{
return x;
};
**MANAGED CLASS**
這是托管類聲明
public __gc class Mclass
{
//private:
public:
cppclass * obj;
public:
Mclass();
~Mclass();
string native();
};
**MANAGED CLASS DEFINITION**
//這是托管類定義
#include"managed.h"
Mclass::Mclass()
{
obj=new cppclass();
};
Mclass::~Mclass()
{
delete obj;
};
string Mclass::native()
{
return obj->native();
};
Now all this is made into a dll and imported in a c# project
using managed;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
managed.Mclass first = new Mclass();
String x=first.nativ();
Console.Out.WriteLine(x);
}
}
}
錯誤來自該語言不支持Managed.Mclass.nativ()
您正在從C ++ / CLI包裝器類返回本機字符串。 您需要返回托管的.net字符串。 包裝類必須轉換參數並將本機類的值返回到適當的托管類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.