GeirGrusom Skrevet 28. juni 2008 Del Skrevet 28. juni 2008 Hei! Jeg har akkurat begynt med å implementere PhysX for Glorg (C# OpenGL rammeverk) og lager dette som en ekstern dll i C++/CLI Vel, jeg har akkurat begynt, og kommet frem til dette: public ref class PhysXDevice : public System::IDisposable { protected: NxPhysicsSDK *m_physx; public: PhysXDevice(); ~PhysXDevice(); // Parameters void SetParameter(NxParameter parameter, NxReal value); NxReal GetParameter(NxParameter parameter); // TODO: Add individual properties virtual void DoDispose() = IDisposable::Dispose; }; Problemet kommer ved virtual void DoDispose() = IDisposable::Dispose. Feilmeldingen er Error 1 error C2039: 'Dispose' : is not a member of 'System::IDisposable' noe jeg synes er litt merkelig... for IDisposable har et medlem som heter Dispose... Halp? hva gjør jeg feil? Jeg kan ikke kalle funksjonen Dispose da får jeg denne feilmeldingen Error 2 error C2605: 'Dispose' : this method is reserved within a managed class Jeg kommer til å måtte bruke IDisposable mye, så det er upraktisk om jeg ikke får det til å fungere :S Lenke til kommentar
OldMan Skrevet 28. juni 2008 Del Skrevet 28. juni 2008 Info. In the .NET Framework version 2.0, the C++ compiler provides support for implementing deterministic disposal of resources and does not allow direct implementation of the Dispose method. Sånn gjør du det. Lenke til kommentar
GeirGrusom Skrevet 28. juni 2008 Forfatter Del Skrevet 28. juni 2008 (endret) Fikk 404 på sidene du postet, men du hintet meg i riktig retning, så tusen takk for svar Så altså: alle unmanaged ressurser (NxPhysicsSDK i mitt tilfelle) må frigjøres i finalizeren PhysXDevice::!PhysXDevice() { NxReleasePhysicsSDK(m_physx); } Endret 28. juni 2008 av GeirGrusom Lenke til kommentar
OldMan Skrevet 28. juni 2008 Del Skrevet 28. juni 2008 (endret) Beklager 404, hadde glemt at jeg satte hjelp til lokal på denne pc'n. Men ja, unmanaged ressurser frigjør du i finalizern. Kall finalizern fra destruktoren. PhysXDevice::~PhysXDevice() { this->!PhysXDevice(); } PhysXDevice::!PhysXDevice() { NxReleasePhysicsSDK(m_physx); } Her er dok du trenger. Endret 28. juni 2008 av OldMan Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå