我创建了我想在各种WinRT项目中使用的可移植类库。我可以在C#Winrt应用程序,VB WinRT应用程序,Silverlight和Windows Phone中使用此PCL DLL。但由于某种原因,我无法成功地将库添加到我的C ++项目中。我尝试这个时得到的错误是:
无法添加对文件'C:\ Users \ xyz \ pqr.dll'的引用,因为它是 既不是.NET程序集也不是注册的ActiveX控件。
我之前看到了same question,OP发布了一个似乎对他有用的解决方案。我试图找到以下行作为原始问题建议,但我在vcxproj文件中找不到它。
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
由于我不能对原始问题发表评论,我想我应该在这里发布另一个问题。
任何想法?
修改 我的项目设置看起来像这样:
现在,当我想在C ++中创建Store App C时,我必须在项目C中添加对A.dll和B.winmd的引用。如果我只包含B.winmd,我会得到第一个运行时异常使用A.dll的时间。我做错了什么?
答案 0 :(得分:2)
C ++应用程序不知道如何执行托管代码。如果要使用C#创建库并使其可用于其他运行时环境(如C ++或Javascript),则必须创建Windows运行时组件项目。它的公共接口仅限于WinRT兼容类型,以允许运行时环境之间的互操作。很多其他小规则。
MSDN首页is here。
答案 1 :(得分:0)
你的消息应该是一个很好的提示 - 一个PCL库是一个.NET库。 WinRT项目需要WinRT组件。您需要创建一个基于.NET的WinRT组件,它将包装您的PCL库,使其可以在非.NET语言中使用。