【发布时间】:2012-02-08 17:26:58
【问题描述】:
我有一个 Assembly(A),它定义了一个托管类,该类具有一个公共构造函数,该构造函数采用两种本机类型。
我可以访问包含本机类型的头文件和编译的 lib 文件。
我创建了一个C++/CLI 项目并定义了一个ref class,其中包含一个返回(A) 中定义的公共类型的public: static 方法。
当我尝试通过传入本机类型进行构造时,我收到 `C3767 'YourType::TypeB': Candidate function(s) not access.
我已经为原生类型和它们派生的任何类型添加了#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 项目引用了第 3 方程序集,该程序集定义了在其构造函数中采用本机类型的类型。我的项目还添加/链接到头文件/lib 文件。
注意:我上面的代码并不完全是我所拥有的,但我已经删除了相关部分。
【问题讨论】:
-
查看本页的 cmets 部分:msdn.microsoft.com/en-us/library/19dh8yat(VS.80).aspx
标签: visual-studio-2010 c++-cli