可以';t在VS 2010 SP1中从C#访问C++类/命名空间
本文关键字:访问 中从 C++ 命名空间 SP1 2010 VS 可以 | 更新日期: 2023-09-27 18:21:38
这是Visual Studio 2010 SP1的版本。我在一个单独的C++项目中有一个C++类,我想从另一个项目(都生活在同一个解决方案下)访问并在C#中使用它。我引用了C#中的C++项目。我使用/clr选项构建我的C++项目。我已经构建了一个C++类的托管版本,它调用相应的原生C++类。
当我右键单击C#项目的"引用"中的C++项目引用,然后单击"在对象浏览器中查看"时,我的C++项目作为对象列表的一部分存在,我可以打开它并查看我试图使用的类、命名空间等。
然而,从C#代码来看,当我尝试"使用"时,它不在名称空间的自动完成列表中,事实上,如果我键入C++名称空间,它会产生编译错误。"错误1找不到类型或命名空间名称"MyCppClass"(是否缺少using指令或程序集引用?)"
这个问题的答案是否定的,如上所述,我没有遗漏using指令或程序集引用。此外,我的C++类不存在于默认的命名空间中,它们根本不存在于我的C#项目的宇宙中。
所以。。。我做错了什么?
这可能太晚了,但我只是和你遇到了同样的问题,然后回来看看你是否得到了答案。
最终,我发现您需要添加COM类作为对.net项目的引用,以及.net包装器类。我创建了一个c++COM dll,并使用tlbimp生成了一个.net包装器。然后,我将包装器添加到我的项目中,并在COM选项卡下添加引用——那里有我的COM程序集,所以我也添加了它,我的项目编译并运行良好。