Adding #pragma make_public (Type) não remove o erro C3767
Tenho um Assembly (A) que define uma classe Managed que possui um construtor público que usa dois tipos nativo
Tenho acesso aos arquivos de cabeçalho e arquivos lib compilados que contêm os tipos nativo
Criei umC++/CLI
projeto e definiu umref class
que contém um únicopublic: static
método que retorna um tipo público definido em (A
Quando tento construir, passando em um tipo nativo, recebo a função `C3767 'YourType :: TypeB': Candidate (s) não acessíve
Eu já adicionei#pragma make_public(Type)
para os tipos nativos e qualquer tipo de qual derivam, mas ainda não alegri
Meu cabeçalho da classe:
#pragma once
#include "StdAfx.h"
using namespace System;
using namespace AssemblyA;
namespace NativeWrapper {
ref class MyFactory
{
public:
static AssemblyAType^ Build();
};
}
Meu arquivo 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
}
Procurei e o tipo gerenciado `AssemblyAType 'tem um construtor público com esta assinatura. Parece que o pragma não funciona?
Então, para resumir.
projeto @My C ++ / CLI faz referência a um assembly de terceiros que define um tipo que usa um tipo nativo em seu construtor. Meu projeto também possui os arquivos de cabeçalho / lib adicionados / vinculados a.
Nota: meu código acima não é exatamente o que tenho, mas retirei as partes pertinente