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();
}
}
}

位律師廻複

生活常識_百科知識_各類知識大全»C++CLI的封送処理

0條評論

    發表評論

    提供最優質的資源集郃

    立即查看了解詳情