我的x64 WPF应用程序需要x32 dll来集成Microsoft.Lifecam.*.dll.有什么想法可以同时允许

本文关键字:dll 什么 Lifecam 应用程序 WPF x64 x32 Microsoft 集成 我的 | 更新日期: 2023-09-27 18:10:03

我正试图将我的Microsoft LifeCam Studio集成到64位c#应用程序中,但我找不到64位dll。

1。有谁知道我在哪里可以找到64位版本的:

Microsoft.LifeCam.Camera.dllMicrosoft.LifeCam.Framework.dllMicrosoft.LifeCam.Streamer.dll

2。是否有办法在64位WPF应用程序中导入和使用上述32位dll ?当我尝试引用和使用它们时,我得到以下编译警告,然后是相关的运行时错误。

警告1正在构建的项目"AMD64"的处理器架构与参考"Microsoft.LifeCam。相机,Version = 4.25.512.0,文化=中立,都必须31 bf3856ad364e35,processorArchitecture = x86"、"x86"。这种不匹配可能会导致运行时失败。请考虑更改目标处理器架构通过配置管理器配置您的项目,以便对齐您的项目和引用之间的处理器体系结构,或者采用对具有匹配的处理器体系结构的引用的依赖项目的目标处理器体系结构。

我编写了下面的应用程序来演示我的问题。这在32位模式下编译和运行得很好。只要将编译器切换到目标x64,就会出现预期的错误。
  1. 新的WPF应用
  2. 添加引用:

    Microsoft.LifeCam.Camera.dllMicrosoft.LifeCam.Framework.dllMicrosoft.LifeCam.Streamer.dll

  3. MainWindow.xaml.cs

using System;
using System.Windows;
using Microsoft.LifeCam;
namespace LifecamTest32Bit
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                CameraList cameras = new CameraList();
                if (cameras.Count < 1)
                {
                    MessageBox.Show("No imaging device found.", "No Camera", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }
                Camera cam = (Camera)cameras[0];
                Streamer streamer = new Streamer(cam, previewControl, false);
                streamer.CurrentVideoResolutionIndex = 1; //selecting a resolution.
                streamer.Start();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + Environment.NewLine + ex.StackTrace);
            }
        }
    }
}

MainWindow.xaml

<!-- language-all: lang-xaml -->
<Window x:Class='LifecamTest32Bit.MainWindow'    
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"            
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  xmlns:strm="clr-namespace:Microsoft.LifeCam;assembly=Microsoft.LifeCam.Streamer"
  Title="MainWindow" Height="350" Width="525" 
  Loaded="Window_Loaded">
  <Grid>
    <strm:PreviewView Name="previewControl" />
  </Grid>
</Window>

我的x64 WPF应用程序需要x32 dll来集成Microsoft.Lifecam.*.dll.有什么想法可以同时允许

微软从未发布过LifeCam的SDK,这些dll不是api。它们是软件的一部分,你不太可能让微软为该软件编写64位版本。

你想如何处理未归档的dll ?微软没有和你签订代码合同来保证接口的正常工作。事实上,微软可能会在下周二对该软件进行更新,以完全删除dll。

如果你想使用网络摄像头,使用DirectShow或Media Foundation等官方api。参见如何在WPF中流式传输网络摄像头?