【问题标题】:Namespace not recognized in C++/CLIC++/CLI 中无法识别命名空间
【发布时间】:2011-10-05 12:17:38
【问题描述】:

我最近问了这个问题:create a namespace in c++/cli? 所以我试图在 c++/cli 中创建我自己的命名空间。

但是当我在两个单独的文件 (.cpp) 中使用相同的命名空间时,命名空间显然不会被识别为相同,因为当我尝试在另一个文件中引用另一个类时出现错误。

这基本上是我所拥有的:

Pets.cpp:

namespace Animals
   {
   public ref class Pets 
     {
     public:
        List<Dog> ^vDogs;

     Pets::Pets()
        {
        vDogs = gcnew List<Dog^>();
        }

     void Pets::DoSomething()
        {
        }
     };
   }

狗.cpp:

namespace Animals
   {
   public ref class Dog 
     {

     Dog::Dog()
        {
        }

     void Dog::DoSomething()
        {
        }
     };
   }

其他信息:

1) 文件在 same 文件夹中

2) 文件已添加到不同文件夹中的现有解决方案

3) 我也在任一文件中尝试了using namespace Animals,但我收到一条错误消息,提示命名空间不存在。

4) 我正在使用 Visual Studio 2010(仅供参考,以防有人有办法修复,但我需要在 VS 中做一些特定的事情)

所以我的问题是:我需要做什么才能识别命名空间?

请告诉我还需要哪些其他信息才能解决问题。

提前感谢您的时间和耐心! :)

【问题讨论】:

    标签: c# visual-studio-2010 namespaces c++-cli


    【解决方案1】:

    C++/CLI 编译器受困于传统 C 和 C++ 编译器的构建模型。在一个千字节的内存占用与鞋盒一样多的空间时制定。它是一次处理一个 .cpp 文件的单通道编译器。使用链接器将位粘合在一起。

    这意味着您必须使用传统的头文件来声明您的类,并使用源代码文件顶部的#include 指令来包含它。

    【讨论】:

    • 好的,所以我会尝试切换到头文件。虽然我很谨慎,因为我过去在头文件中放入public ref class Pets{} 时遇到了问题(编译器似乎没有喜欢它..这就是它现在在 cpp 中的原因) - 欢迎任何对此的见解! :)
    • 我不知道那是什么意思。您是否考虑过阅读一本关于 C++/CLI 编程的书,而不是随意尝试一下?
    • 按照 Hans 的指示重试(= 将声明/定义放在标题中)。请记住仅将标头包含在一个 cpp 文件中。此时,您可以安全地从一个干净的项目重新启动。当您在另一个 clr/cil 项目中使用 dll 时,请记住将其添加为参考。请记住:对于新项目,推荐使用 C++/CLI。您已经了解 C++ 并没有增加任何价值。仅建议使用 C++/CLI 包装本机代码。如果您不需要包装原生代码,只需使用 C#。
    • 没时间看书。。需要在严格的期限内包装原生代码。
    • 我重读了你的答案,我想知道.. 你的意思是我不能在头文件中创建命名空间吗?我之前问题的答案表明我可以..:s
    猜你喜欢
    • 1970-01-01
    • 2014-01-21
    • 2012-05-07
    • 2019-12-19
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 2018-02-20
    相关资源
    最近更新 更多