0
我想知道如何編組2個類,我用C#語言編寫的C++。我試過Google自己的這個,但是我的英語知識並不是那種進步,爲了尋找正確的東西,我是從C++到C#編組的新手)Marshal 2 IntPtr在相同的功能?
那麼基本上是什麼我已經是這樣的:
C++
EXPORT_API CarClass* DLL_AddCar();
EXPORT_API CarWheel* DLL_AddWheel();
EXPORT_API void DLL_GiveWheelToCar(CarClass* car,CarWheel* wheel);
C#
public class Car
{
#region Members
private IntPtr nativeCarObject;
#endregion Members
public Car()
{
this.nativeCarObject = Sim.DLL_AddCar();
}
// ---> this part is not working
//#region Wrapper methods
//public void GiveWheel(Wheel myWheel){Sim.DLL_GiveWheelToCar(this.nativeCarObject,myWheel);}
//#endregion Wrapper methods
}
public class Wheel
{
#region Members
private IntPtr nativeCarObject;
#endregion Members
public Wheel()
{
this.nativeCarObject = Sim.DLL_AddWheel();
}
}
internal class Sim
{
public const string pluginName = "MyDLL";
#region PInvokes
[DllImport(pluginName)] public static extern IntPtr DLL_AddCar();
[DllImport(pluginName)] public static extern IntPtr DLL_AddWheel();
[DllImport(pluginName)] public static extern void DLL_GiveWheelToCar(IntPtr car,IntPtr wheel);
#endregion PInvokes
}
現在的問題是在那裏我會用「DLL_GiveWheel ToCar「? 我試過的方法被註釋掉了,因爲它沒有工作,是邏輯錯誤,還是應該改變我編組的方式?
感謝您的諮詢。
謝謝!我做了改變。 關於對象本身,我做了一個GetObject方法,它返回它的IntPtr。是否有可能從IntPtr以某種方式派生? – JohnYouDontLike
我不認爲從'IntPtr'派生是有意義的。 –