1

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

我有一个 VS 2008 解决方案,其中包括:(为简单起见更改了名称)

  • DLL A:原生 C++,业务逻辑 DLL
  • DLL B:DLL A 的 C++/CLI 包装器,命名空间为“Wrapper”
  • EXE:AC# 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?)

然而:

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

关于尝试什么的任何想法?

4

1 回答 1

0

我想我想通了。

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

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

我发现这一点的方法是查看构建输出。在对 csc.exe 的调用中,没有 DLL B 的“/reference”条目。

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

于 2013-03-14T17:23:36.377 回答