添加 #pragma make_public(Type) 未消除 C3767 错误

2024-01-08

我有一个 Assembly(A),它定义了一个托管类,该类具有一个采用两种本机类型的公共构造函数。

我可以访问包含本机类型的头文件和编译的 lib 文件。

我创建了一个C++/CLI项目并定义了ref class其中包含一个public: static返回 (A) 中定义的公共类型的方法。

当我尝试通过传入本机类型进行构造时,我收到“C3767 'Your Type::Type B':候选函数不可访问”。

我已经添加#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 文件。

注意:我上面的代码并不完全是我所得到的,但我已经删除了相关部分。


make_public 将使本机类型对使用它的程序集的使用者可见:http://msdn.microsoft.com/en-us/library/ms235607(v=vs.80).aspx http://msdn.microsoft.com/en-us/library/ms235607(v=vs.80).aspx。它不会更改您引用的程序集中的可见性。

看来您引用的程序集应该具有本机类型的 make_public ,或者简单地声明本机类型 public (请参阅标头的类型可见性 共享在本机和托管客户端之间共享的标头文件 https://stackoverflow.com/questions/4121422/type-visibilty-for-a-header-share-a-header-file-shared-between-native-and-manage).

下面的页面似乎表明,他们应该因在不公开本机类型的情况下编写方法而收到警告:http://msdn.microsoft.com/en-us/library/ms173713(v=vs.80).aspx http://msdn.microsoft.com/en-us/library/ms173713(v=vs.80).aspx

也许您可以发布第三方 AssemblyAType 代码以确保我们没有遗漏任何其他内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

添加 #pragma make_public(Type) 未消除 C3767 错误 的相关文章

随机推荐

  • 如何配置 DispatcherServlet 和 ContextLoaderListener 以便让位于 OpenViewInSessionFilter

    我在使用 spring 3 0 5 和 hibernate 3 6 1 时遇到了一些问题 在发现我需要一个OpenViewInSessionFilter在一篇帖子中堆栈溢出 https stackoverflow com questions
  • 根据应用于多列的单个条件对数据框进行子集化

    我浏览了该网站上现有的子集问答 但找不到我想要的内容 我想根据一个条件 例如 如果值低于 5 对数据框进行子集化 但是 我只想要所有列中的值都低于 5 的行 例如使用iris数据集 我想选择第 1 3 列的值均低于 5 的所有行 subda
  • 允许每个实例一个代理的最佳 Web 浏览器控件是什么?

    我正在制作一个多线程 workers 应用程序 每个线程都应该有自己的非 GUI Web 浏览器 用于导航到网页并将数据写入字段并单击按钮 我还需要每个网络浏览器都有它自己的代理 我尝试了经典的 Windows Forms WebBrows
  • View 的 getWidth() 和 getHeight() 返回 0

    我看过类似的问题并尝试了他们的解决方案 但它对我不起作用 我正在尝试阅读width of an imageView 但它正在返回0 这是代码 public class MainActivity extends Activity privat
  • Parse.com 相当于 Group By

    我一直在浏览解析论坛 我发现截至 2 年前还没有 SQL Group By 的等效项 我想知道这方面有什么进展吗 我有数千条记录 我需要按价值评级的降序下拉所有记录 然后按名称对它们进行分组 如果目前不可用 也许有人可以建议我可以做一些工作
  • 是否保证C中的数组元素将连续存储,没有填充?

    换句话说 如果我有一个以这种方式分配的数组 是否可以保证 void arr calloc nmemb sizeof some type Then elta eltb eltc都将指向内存中的同一位置 这将是 type 的第二个元素some
  • 如何消除 Spotfire 箱形图中的异常值

    提前感谢您的帮助 问候 拉杰 将值添加到MAX 即使可能 值也会扭曲数据 不过 有两种技巧可以做到这一点 右键单击 gt 属性 gt Y 轴 gt 设置MIN范围值和MAX将值范围设置为可以消除所有异常值的值 这实际上只适用于所有值都彼此接
  • 根据先前的值对 numpy 代码进行向量化操作

    以下代码模拟了一个可以随时采样 3 个不同状态的系统 这些状态之间的恒定转移概率由矩阵给出prob nor 因此 中的每个点trace取决于之前的状态 n states n frames 3 1000 state val np linspa
  • 如何正确使用 Meteor.connect() 与另一个 Meteor 服务器连接

    我的新客户端代码位于 client main coffee Xingyun Meteor connect localhost 3000 System new Meteor Collection system Xingyun Meteor s
  • Java等待函数

    我想知道你们是否可以帮助我 我正在尝试使用 Java 内置的图形模块制作一个动画程序 事实是 Java 立即执行所有操作 不同的动画之间没有任何时间 最终产品只是最后一张图片 我需要一个在每张图片之间放置半秒的功能 任何帮助表示赞赏 规格
  • 将 XML 部分反序列化为对象

    我有一些 XML 我将其反序列化为业务对象 我正在使用 XmlSerializer Deserialize 来执行此操作 但是 我希望 XML 中包含的 XmlElement 之一保留为 XElement 由于 XElement 不可序列化
  • Cocoa:用 X 关闭后以编程方式显示主窗口

    我想在用户使用 X 按钮关闭 Cocoa 应用程序的主窗口后以编程方式重新打开它 我知道它仍在记忆中的某个地方 但我不知道在哪里 如果您使用默认的 Cocoa 应用程序模板 您的应用程序委托将引用 MainMenu xib 中的窗口 您只需
  • 来自csv文件python的字典

    我已经阅读了一个 cvs 文件 我想根据该文件上的信息创建一个字典 我尝试使用 csv DictReader 类来实现该建议 但它没有给我想要的结果 现在我正在读取这样的文件 size reader csv reader f dialect
  • 在 ASP.NET 中处理长时间运行的进程的常见方法

    我们有一个长时间运行的数据传输过程 它只是一个被调用和运行的 asp net 页面 最多可能需要几个小时才能完成 它似乎工作得很好 但我只是想知道有哪些更流行的方法来处理这样的漫长过程 您是否创建应用程序并通过 Windows 调度程序 W
  • 在自定义位置设置 .git 文件夹

    这是我当前的目录结构 mygit code git morecode mycode The code文件夹由git监控 git的文件在通常的情况下代码 git 我只处理这段代码的一部分 即mycode 我想使用 git 来管理我的代码 但我
  • Django 小部件覆盖模板

    我是 django 的新人 我想创建一个自定义小部件 形式 py from project widgets import MultiChoiceFilterWidget class CustomSearchForm FacetedSearc
  • 如何在 Django 模板标签内将字符串连接到数字

    我找到了一个StackOverflow 上有类似问题 https stackoverflow com questions 4386168 how to concatenate strings in django templates 但该解决
  • PHP7 中 foreach 的变化

    foreach在 PHP7 中 默认情况下 当按值迭代时 根据以下方式对数组的副本进行操作 http php net manual en migration70 inknown php http php net manual en migr
  • Django python-rq -- DatabaseError SSL错误:解密失败或坏记录mac

    我正在使用 django redis 和 django rq 框架来支持 Heroku 上的 Django 应用程序的 redis 缓存和 redis 后台任务处理 过去工作顺利 但现在我不断收到DatabaseError SSL erro
  • 添加 #pragma make_public(Type) 未消除 C3767 错误

    我有一个 Assembly A 它定义了一个托管类 该类具有一个采用两种本机类型的公共构造函数 我可以访问包含本机类型的头文件和编译的 lib 文件 我创建了一个C CLI项目并定义了ref class其中包含一个public static