加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

.net – 跨CPU体系结构从Windows 10 Universal App引用C Dlls

发布时间:2020-12-14 04:04:38 所属栏目:Windows 来源:网络整理
导读:基本问题/摘要:我需要从Win 10通用应用程序项目中引用C中其他人创建的二进制文件(dll).但是,x86和arm有一个单独的dll.我相信我需要从项目中引用dll(或至少是winmd文件)来部署它,但我只能引用一个文件而不是两个文件.这意味着应用程序在一个平台或另一个平台
基本问题/摘要:我需要从Win 10通用应用程序项目中引用C中其他人创建的二进制文件(dll).但是,x86和arm有一个单独的dll.我相信我需要从项目中引用dll(或至少是winmd文件)来部署它,但我只能引用一个文件而不是两个文件.这意味着应用程序在一个平台或另一个平台(桌面或电话)上失败,因为它包含错误的二进制文件.寻找解决方案.

更详细的解释;

我正在尝试编写通用Windows应用程序(新的Windows 10样式).这意味着我有一个项目可以添加对外部组件的引用.

我需要一些图像处理的东西,最好作为第三方组件购买,而不是在内部开发.有三个SDK可以从支持WinRT的第三方获得,但没有一个专门支持UWA.但是,WinRT SDK对Windows Phone和Windows桌面应用程序都有不同的二进制文件.二进制文件都是从C/C++源创建的.对于较旧的“通用”应用程序来说这很好,因为有一个单独的电话和桌面项目,所以你可以在每个项目中引用不同的组件,但现在只有一个项目可以添加引用.

我问过一家供应商有关UWA的支持,他们声称这是不可能的,他们无法创建一个二进制文件来定位两个平台(arm vs x86),他们不知道我的UWA在应用程序时引用正确文件的方法是为适当的架构而构建的(这是我认为应该发生的).

我假设有一些问题(也许是在一个winmd文件中?),’嘿,这里是不同CPU体系结构的相同dll的两个副本,选择你正在构建的那个’并且只要公共API与app匹配只是使用正确的?

这有解决方案吗?有谁知道这种引用应该如何工作?或者我只是运气不好?

谢谢.

有一种方法可以在项目中引用具有不同体系结构的相同DLL,但是您无法直接从VS中执行此操作.您必须手动编辑csproj文件.

在csproj文件中,您必须转到底部并找到这些部分.这些部分引用了您的所有文件.

项目定义中有一个特殊标记,允许您告诉Visual Studio根据某些条件执行某些特定操作.然后,您可以创建一个引用DLL依赖项的组.
您的csproj文件将如下所示:(我删除了所有非相关的东西)

<Project>
  <PropertyGroup />
  <PropertyGroup />
  <PropertyGroup />
  <ItemGroup />
  <ItemGroup />
  <Choose>
    <When Condition=" '$(Platform)' == 'x86' ">
      <ItemGroup>
        <Content Include="..Binariesx86MyLib1.winmd">
            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </Content>
         <Content Include="..Binariesx86MyLib2.winmd">
          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </Content>
      </ItemGroup>
    </When>
    <When Condition=" '$(Platform)' == 'ARM' ">
      <ItemGroup>
        <Content Include="..BinariesARMMyLib1.winmd">
            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </Content>
         <Content Include="..BinariesARMMyLib2.winmd">
          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </Content>
      </ItemGroup>
    </When>
  </Choose>
  <Import />
  <Import />
</Project>

我已经在VS2013上用于一些Windows Phone项目(使它们在手机和模拟器上都可以工作).我没有在Windows 10和VS2015上进行测试,但它应该以相同的方式工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读