Share via

Facebook x.com LinkedIn Email

How to: Wrap Native Class for Use by C#

This sample shows how to wrap a native C++ class so it can be consumed by code authored in C#, or other .NET language.

Example

// wrap_native_class_for_mgd_consumption.cpp
// compile with: /clr /LD
#include <windows.h>
#include <vcclr.h>
#using <System.dll>
using namespace System;
class UnmanagedClass {
public:
 LPCWSTR GetPropertyA() { return 0; }
 void MethodB( LPCWSTR ) {}
};
public ref class ManagedClass {
public:
 // Allocate the native object on the C++ Heap via a constructor
 ManagedClass() : m_Impl( new UnmanagedClass ) {}
 
 // Deallocate the native object on a destructor
 ~ManagedClass() {
 delete m_Impl;
 }
protected:
 // Deallocate the native object on the finalizer just in case no destructor is called
 !ManagedClass() {
 delete m_Impl;
 }
public:
 property String ^ get_PropertyA {
 String ^ get() {
 return gcnew String( m_Impl->GetPropertyA());
 }
 }
 void MethodB( String ^ theString ) {
 pin_ptr<const WCHAR> str = PtrToStringChars(theString);
 m_Impl->MethodB(str);
 }
private:
 UnmanagedClass * m_Impl;
};

See Also

Reference

Using C++ Interop (Implicit PInvoke)


  • Last updated on 2013年02月04日