2013-03-14 138 views
1

我遇到类似于this one的问题。C++/CLI CS0246:无法找到类型或名称空间名称'Wrapper'

我有一个VS 2008解决方案,包括,除其他事项: (名称改变为简单起见)

  • DLL A:本地C++,业务逻辑DLL
  • DLL B:A C++/CLI包装的DLL A和 “包装”
  • EXE的命名空间:C#的WinForms GUI EXE项目(引用DLL B)

当我打造的EXE,VS给我一个错误:

error CS0246: The type or namespace name 'Wrapper' could not be found (are you missing a using directive or an assembly reference?) 

但是:

第一个链接的问题提到了一些关于“编译器符号的重复定义”的内容,但我不确定在这个意义上寻找什么。

有什么想法?

+0

您是否从EXE项目添加了对DLL B项目的引用? (你说所有引用都解决了,但是你没有列举'all'。) – 2013-03-14 17:15:51

+0

@DavidYaw我想通了 - 请看我的答案。 – Kohanz 2013-03-14 17:24:02

回答

0

我想我明白了这一点。

更多背景:在构建之前,整个解决方案都是使用CMake创建的。我使用CMake对EXE的csproj文件进行一些编辑,将其指向正确的引用,包括DLL B.

每当我运行CMake时,csproj文件的ProjectReference节点中的静态定义的GUID为DLL B与用于输出DLL B的vcproj的新生成的GUID不同步。这种GUID不匹配导致DLL B在构建时间处不被引用,即使它在参考列表中显示并且没有相关的警告或错误。

我发现这种方式是通过查看构建输出。在调用csc.exe时,DLL B没有'/ reference'条目。

现在我需要找到一种方法来保持这些GUID同步!

+0

@Kohnaz那么你是如何保持这些GUID同步的。你能发布更新的答案吗? – Versatile 2017-06-02 13:25:19

+0

@Versatile幸运的是,我在相关问题(https://stackoverflow.com/a/15432733/931528)中有点记录了这一点,因为我的记忆对此很朦胧。现在使用CMake + .NET可能会有更好的支持选项。 – Kohanz 2017-06-02 15:55:15

相关问题