我试图给vb.net dll引用C ++ Project。我能够成功添加引用,但我无法在代码中使用它。
我有以下参考:
我想尝试使用它:
Configuration::MyClass::MyFunction()
我收到以下错误:
error C2653: 'Configuration' : is not a class or namespace name
我做错了什么?我是否需要添加头文件?
答案 0 :(得分:2)
将此代码放在课程顶部
<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
答案 1 :(得分:0)
确保已通过其'ComVisible'
属性将组件暴露给COM子系统。然后,您应该注册程序集以将其公开给COM 'subscribers'
。
只有这样,您才能使用C ++代码中的程序集命名空间。
查看How to call a managed DLL from native Visual C++ code了解分步指南。
答案 2 :(得分:0)
一方面,根据this answer,它可能只是一个Visual Studio失败。
另一方面,the other answer suggests它可能是一个依赖问题。此外,您可能在不同的库中定义了两次相同名称的类。
无论如何,请考虑重新检查所有依赖项和Visual Studio设置。
这是关于该主题的another answer。
UPD:检查您是否尝试定义复合命名空间,即illegal in C++。