C++/CLI: Visibilidad/acceso de tipos nativos

Supongamos que tenemos lo siguiente en una assembly C++/CLI:

//Assembly A
public ref class ManagedClass{
public:
    ManagedClass( const NativeClass & a );
}

Si quiero invocar ese constructor desde otra assembly, por ejemplo...

//Assembly B
ManagedClass^ AnotherManagedClass::Property::get(){
    NativeClass temp;
    return gcnew ManagedClass( temp );
}

...al tratar de compilar Assembly B, nos saltará un error en tiempo de compilación que dirá que el constructor que estamos invocando es privado. ¿Pero cómo puede ser si lo declaramos público? La respuesta está acá.

Allí vemos que la solución consiste en usar la directiva #pragma make_public(NativeClass) justo debajo del #include de NativeClass.

Comments

Popular posts from this blog

Upgrading Lodash from 3.x to 4.x

C++/CLI: Trigger events from C++ native code and handle them in Managed code, Part I

Traduciendo un custom control de Windows Forms de VB.NET a C#