Добавление #pragma make_public (Type) не удаляет ошибку C3767

У меня есть сборка (A), которая определяет класс Managed, который имеет открытый конструктор, который принимает два нативных типа.

У меня есть доступ к файлам заголовков и скомпилированных файлов lib, которые содержат нативные типы.

Я создалC++/CLI проект и определилref class который содержит одинpublic: static метод, который возвращает открытый тип, определенный в (A).

Когда я пытаюсь создать структуру путем передачи нативного типа, я получаю `C3767 'YourType :: TypeB': функции-кандидаты, которые недоступны.

я добавил#pragma make_public(Type) для нативных типов и любого типа, от которого они происходят, но все еще не радость.

Мой заголовок класса:

#pragma once
#include "StdAfx.h"

using namespace System;
using namespace AssemblyA;

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

Мой файл 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
}

Я посмотрел, и у управляемого типа AssemblyAType есть открытый конструктор с этой подписью. Не могу заставить прагму работать ??

Итак, подведем итог.

Мой проект C ++ / CLI ссылается на стороннюю сборку, которая определяет тип, который принимает собственный тип в своем конструкторе. Мой проект также имеет добавленные / связанные файлы заголовка / lib.

Примечание: мой код выше не совсем то, что у меня есть, но я удалил соответствующие части.

Ответы на вопрос(1)

Ваш ответ на вопрос