2012-01-27 34 views
1

这与Visual Studio 2010 SP1一样。我在一个单独的C++项目中有一个C++类,我想从另一个项目(都生活在同一个解决方案中)访问和使用C#。我从C#引用了我的C++项目。我使用/ clr选项构建我的C++项目。我已经构建了一个C++类的托管版本,它调用相应的本机C++类。无法从VS 2010 SP1中的C#访问C++类/名称空间

当我从我的C#项目的“References”中右键单击我的C++项目引用,然后单击“在对象浏览器中查看”时,我的C++项目作为对象列表的一部分存在,我可以打开它并查看我正在尝试使用的我的类,名称空间等。但是,从C#代码中,当我尝试“使用”它不是自动完成名称空间列表的一部分时,实际上,如果我键入C++名称空间,则会出现编译错误。 “错误1类型或命名空间名称‘MyCppClass’找不到(是否缺少using指令或程序集引用?)”

而这个问题的答案是否定的,我不缺少using指令或装配参考,如上所述。另外,我的C++类不存在于默认的命名空间中,它们根本不存在于我的C#项目的Universe中。

那么......我做错了什么?

+0

你能够添加任何其他外国dll吗?只是正常的C#的?如果您的项目设置为.net 4客户端配置文件,然后尝试将其更改为正常的.net 4并查看是否有帮助,那么我以前也遇到过类似的问题。 – 2012-01-27 05:00:51

+0

我不知道其他外国DLL,需要尝试,但我可以参考其他C#项目。我被配置为.net 4客户端,并将其切换到正常的,但是这并没有解决我引用C++对象的问题。 – 2012-01-27 23:45:15

+0

我有同样的问题...有没有人解决过这个问题? – casper 2013-01-28 15:09:58

回答

0

这可能为时已晚,但我刚刚遇到同样的问题,并回来看看您是否有答案。

最终我发现你需要实际添加你的COM类作为你的.net项目的引用以及.net包装类。 我创建了一个C++ COM DLL,并使用tlbimp生成一个.net包装。然后我将包装添加到我的项目中,并在COM选项卡下添加了引用,它具有我的COM组件,因此我也添加了这个,并且我的项目编译并运行良好。

+1

这不是一个COM问题。 – 2012-02-25 21:19:23

相关问题