【问题标题】:Error C2653. The type or namespace name could not be found (Reference present) in C++错误 C2653。在 C++ 中找不到类型或命名空间名称(存在引用)
【发布时间】:2014-03-04 23:18:35
【问题描述】:

我试图将 vb.net dll 引用提供给 C++ 项目。我能够成功添加引用,但我无法在我的代码中使用它。

我有以下参考:

我正在尝试像这样使用它:

Configuration::MyClass::MyFunction()

我收到以下错误:

error C2653: 'Configuration' : is not a class or namespace name

我做错了什么?需要添加头文件吗?

【问题讨论】:

  • 你有没有勾选Project Property->Assembly Information of VB.Net Project的Make assembly COM-Visible属性?
  • 嘿..在你的建议下我也试过这个..但同样的情况..:(
  • 可能是您的 dll 已经可见。但是,您的方法或类可能不会。

标签: c++ vb.net reference


【解决方案1】:

将此代码放在类的顶部

<ComVisible(True)> _
<Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")> _
<ClassInterface(ClassInterfaceType.None)> _

阅读此主题。我想这会对你有所帮助。 http://social.msdn.microsoft.com/Forums/en-US/3f30b414-2ea3-4a54-b4cb-24e48fdfda3e/calling-vbnet-dll-from-c?forum=vbgeneral

【讨论】:

  • 仍然无法正常工作.. 你用过 c++ 吗?我可以从我的 C++ 动态库中显示组合框吗?外部应用程序将调用我的 C++ dll,我想从组合框中输入一些内容。你能建议我最好的方法吗?
  • 我以前在 c++ 中工作过。但是,我不是这方面的专家。我是 C#/VB.Net 程序员。因此,您想从您的 c++ dll 加载一个组合框并在外部应用程序中使用它。我说的对吗?
  • 嗨@TithiPatel 你有答案吗?我仍然对有关 vb.net dll 和 c++ dll 的一些问题感到困惑。我可以在聊天室用我们的语言与您交谈吗?
【解决方案2】:

确保您已通过其'ComVisible' 属性向 COM 子系统公开程序集。然后,您应该注册该程序集以将其公开给 COM 'subscribers'

只有这样您才能从 C++ 代码中使用程序集命名空间。

查看How to call a managed DLL from native Visual C++ code 了解分步指南。

【讨论】:

    【解决方案3】:

    一方面,根据this answer 的说法,这可能只是 Visual Studio 的故障。

    另一方面,the other answer suggests 可能是依赖问题。此外,您可能在不同的库中定义了两次同名的类。

    无论如何,请考虑重新检查所有依赖项和 Visual Studio 设置。

    这里是another answer关于这个话题。

    UPD:检查您是否尝试定义复合命名空间,即illegal in C++

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-25
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-24
      相关资源
      最近更新 更多