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'命名空间在对象浏览器没有问题
第一个链接的问题提到了"编译器符号的重复定义",但我不确定在这种意义上该寻找什么。
有什么好主意吗?
我想我明白了。
更多背景信息:在构建之前,整个解决方案是使用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同步!