C++CLI的封送处理,第1张

C++CLI的封送处理,第2张

//
C++ ClassCpp带本机代码和C++ class encapp2charp带CLI代码现在
使用VC++2008的/clr编译选项编译DLL
/
# include
# include。# include
class class CPP
{
public:
class CPP(void){ strcpy _ s(m _ SZ temp," ");}
virtual ~ class CPP(void){ }
public:
void SetString(const char * pchar)
{
strcpy _ s(m _ SZ temp,pchar);
printf("%s\n ",m _ SZ temp);
}
const char * GetString()
{
strcpy _ s(m _ SZ temp," Hello!我是C++。”);
return m _ SZ temp;
}
private:
char m _ SZ temp[128];
};
//
使用命名空间系统;
使用命名空间System::Runtime::interop services;
//CLI代码C++类
命名空间snycstudio {命名空间封装测试{
//测试[C++ > C#&C# > C++]
public ref类encapcpp 2 sharp
{
public:
encapcpp 2 sharp(void){ m _ pClassCpp new class CPP;}
virtual ~ encapcpp 2 sharp(void){ delete m _ pClassCpp;}
public:
//string
void set string(string str)
{
char * PCH(char *)marshal::stringtolobalansi(str)。拓扑指针()。
m _ pClassCpp-> SetString(PCH);//传递的字符串类型。NET到本机代码类class CPP
}
String GetString()
{
获取本机代码类的字符串
const char * PCH M _ PClassCPP-> GetString();
//字符串类型已转换为。NET
string str marshal::ptrtostringansi((intptr)(char *)PCH);
返回字符串;
}
void getstring(string^% str)
{
const char * PCH m _ pclasscpp-> getstring();
str Marshal::PtrToStringAnsi((IntPtr)(char *)PCH);
}
private:
class CPP * m _ pClassCpp;
};
}}
/
/c #程序
/
使用系统;
使用系统。集合。泛型;
使用系统。Linq
使用系统。文本;
使用SnycStudio。封装测试;
namespace hello world
{
class Program
{
static void Main(string[]args)
{
encapcpp 2c sharp ec2s new encapcpp 2c sharp();
string strTemp1 ec2s。GetString();
控制台。WriteLine(strtemp 1);
string strtemp 2 " ";
ec2s。GetString(ref strtemp 2);
控制台。WriteLine(strtemp 1);
控制台。ReadLine();
}
}
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++CLI的封送处理

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情