c++ /CLI CS0246:类型或命名空间名称'Wrapper'找不到

本文关键字:找不到 Wrapper 命名空间 CLI CS0246 类型 c++ | 更新日期: 2023-09-27 18:04:00

我遇到了一个似乎与此相同的问题。

我有一个VS 2008的解决方案,其中包括:

  • DLL A:一个本地c++,业务逻辑DLL
  • DLL B: DLL A的c++/CLI包装器,命名空间为" wrapper "
  • 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?)
然而:

  • 没有其他错误或警告报告
  • EXE项目中的所有引用似乎都可以正确解析
  • DLL A和DLL B构建时没有错误或警告
  • DLL A包含。h头文件和。cpp文件(只包含。h头文件)
  • 我可以遍历'Wrapper'命名空间在对象浏览器没有问题

第一个链接的问题提到了"编译器符号的重复定义",但我不确定在这种意义上该寻找什么。

有什么好主意吗?

c++ /CLI CS0246:类型或命名空间名称'Wrapper'找不到

我想我明白了。

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

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

我是通过查看构建输出发现这一点的。在对csc.exe的调用中,没有针对DLL b的"/reference"项。

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