Agregando #pragma make_public (Tipo) no elimina el error C3767

Tengo un ensamblado (A) que define una clase administrada que tiene un constructor público que toma dos tipos nativos.

Tengo acceso a los archivos de encabezado y archivos de compilación que contienen los tipos nativos.

Creé unaC++/CLI proyecto y definió unref class que contiene una solapublic: static método que devuelve un tipo público definido en (A).

Cuando trato de construir al pasar un tipo nativo, recibo el 'C3767' YourType :: TypeB ': las funciones candidatas no son accesibles.

He añadido#pragma make_public(Type) para los tipos nativos y cualquier tipo del que se deriven, pero que aún no sean alegres.

Mi encabezado de clase:

#pragma once
#include "StdAfx.h"

using namespace System;
using namespace AssemblyA;

namespace NativeWrapper {
    ref class MyFactory
    {
    public:
        static AssemblyAType^ Build();
    };
}

Mi archivo cpp:

#include "StdAfx.h"

#pragma make_public(nativeObjectRoot)
#pragma make_public(nativeObjectDerived)


#include "MyFactory.h"

using namespace System;

using namespace NativeWrapper;

AssemblyAType^ MyFactory::Build()
{
  nativeObjectDerived* myNativeObject;
  //myNativeObject initialised and set up here
  return gcnew AssemblyAType(myNativeObject); <--C3767
}

He buscado y el tipo administrado 'AssemblyAType' tiene un constructor público con esta firma. Parece que no puede hacer que la pragma funcione ??

Para resumir.

Mi proyecto C ++ / CLI hace referencia a un ensamblado de terceros que define un tipo que toma un tipo nativo en su constructor. Mi proyecto también tiene los archivos de encabezado / lib agregados / vinculados a.

Nota: mi código anterior no es exactamente lo que tengo pero eliminé las partes pertinentes.

Respuestas a la pregunta(2)

Su respuesta a la pregunta