您可以通過COM Interop或C++/CLI
訪問C++對象/ dll。使用C++/CLI
,您可以創建自己的包裝對象/類,這些對象/類可以直接在C#中使用。知道C++和C#,語法對你來說都會很熟悉(並且有很好的在線資源)。因爲你需要編寫CLI包裝器,C++/CLI可能需要更多的工作,但是會讓你的C#代碼更清晰(我認爲)。
這下面的文章應該讓你開始:Quick C++/CLI - Learn C++/CLI in less than 10 minutes
更深入的文章:http://msdn.microsoft.com/en-us/magazine/cc163852.aspx
一個代碼示例(顯示殼語法)使事情變得更加精彩,從上面借來的。 Student
是你的C++類,StudentWrapper
是個CLI包裝在你的C#代碼中使用:
public ref class StudentWrapper
{
private:
Student *_stu;
public:
StudentWrapper(String ^fullname, double gpa)
{
_stu = new Student((char *)
System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(
fullname).ToPointer(),
gpa);
}
~StudentWrapper()
{
delete _stu;
_stu = 0;
}
property String ^Name
{
String ^get()
{
return gcnew String(_stu->getName());
}
}
property double Gpa
{
double get()
{
return _stu->getGpa();
}
}
};
我可能是錯的,但我認爲託管的C++對象與C#兼容。它是不是託管C++也許?如果託管C++使用非託管媒體基金會對象,只需將它們包裝在託管代碼中 – EOG
「我可以用C#代碼中的參數調用它。」 - 你怎麼做到這一點? COM Interop? –
要調用C++託管代碼,我添加了程序集作爲參考。接下來,我使用「using」加載了命名空間。從那時起,我可以像C#靜態類一樣訪問C++方法。 – James