在Visual Studio 2015中向通用Windows C++ DLL项目添加通用Windows C#类库引用

4
正如标题所述,我正在尝试将UWP C#类库引用添加到UWP C++ DLL项目中。这两个项目都针对Windows 10 v10.0.14393.0。当添加了引用后,一切似乎都是有效的,并且该引用显示在引用列表下,没有错误列出。当您尝试使用引用并编译时,会出现以下错误:C2871 - 此名称的命名空间不存在。
我错过了什么吗?在创建新的通用Windows C++项目时,唯一的选项是DLL、静态库和Windows运行时组件。没有C++类库选项。我尝试了所有三种不同的项目,结果相同。有人能否提供解决方案和/或解释为什么我不能从UWP C++项目引用UWP C#类库?这似乎是应该可能的事情。我知道在UWP之前是可能的。
代码很简单。
C#代码:
namespace ClassLibrary1
{
    public class Class1
    {
    }
}

C++ 代码:

using namespace ClassLibrary1;

很可能是一个设置问题,请确认是否将目标定为x86并签名程序集会导致相同的编译错误。 - Jeremy Thompson
两个项目都在配置管理器(Release x64 build)下设置为x64。不确定如何检查签名程序集的结果? - Chris
那么针对x86目标会产生相同的错误吗?您尝试过使用不同的命名空间吗,例如ClassLibCSharp和ClassLibCpp?签名是一个非常冒险的方法,并且更多的是尝试获取更多线索的示例,但请尝试一下吧,签名选项卡在项目属性中。 - Jeremy Thompson
当选择x86时,dll将设置为Win32,而c#项目是x86。我认为这是等价的? - Chris
可能会对你有帮助:使用C#和Visual Basic创建Windows Runtime组件 - Jay Zuo
1个回答

3
您的C#项目必须是“C# Windows Runtime Component”项目,而不是“C# Class Library”项目。您无法从C++访问类库。如果目标代码使用不同的语言编写,则最实用的方法是将其编译为Windows Runtime组件以进行访问。
另外,在创建C# Windows Runtime组件项目后,不要忘记将其添加到C++项目的引用中(如果您没有使用vcxproj构建代码,则使用/FU编译器标志)。

将其设置为运行时组件,但我仍然收到相同的错误:Error C2871“RuntimeComponent1”:此名称的命名空间不存在WindowsRuntimeComponent1。 - Chris
我成功地让这个工作起来了,方法是将C++和C#项目都设置为运行时组件。如果其中一个不是运行时组件,则会出现名称空间不存在的错误。 - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接