2014-06-24 46 views
0

我正在嘗試將我的Microsoft LifeCam Studio集成到64位C#應用程序中,但找不到64位dll。我的x64 WPF應用程序需要用於Microsoft.Lifecam。*。dll集成的x32 DLL。任何允許兩者的想法?

有誰知道在哪裏可以找到的64個版本:

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

2.有沒有辦法在64位WPF應用程序中導入和使用上述32位DLL?當我嘗試引用並使用它們時,我收到以下編譯警告,然後發生相關的運行時錯誤。

警告1有該項目的處理器體系結構之間的失配被內置「AMD64」和 參考「Microsoft.LifeCam.Camera的處理器體系結構,版本= 4.25.512.0, 文化=中性,PublicKeyToken = 31bf3856ad364e35, processorArchitecture = x86「,」x86「。這種不匹配可能導致運行時間失敗。請考慮通過配置管理器更改項目的目標處理器體系結構 ,以便在您的項目和參考之間對齊 處理器體系結構,或者對參考進行 依賴關係,處理器體系結構與您項目的目標處理器體系結構匹配 。

我寫了下面的應用程序來演示我的問題。這在32位模式下編譯並運行良好。只要我將編譯器切換到目標x64,我就會收到預期的錯誤。

  1. 新的WPF應用程序
  2. 添加引用:

    Microsoft.LifeCam.Camera.dll Microsoft.LifeCam.Framework.dll Microsoft.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> 

回答

1

微軟沒有發佈一個SDK爲LifeCam的,這些DLL都沒有的API。它們是該軟件的一部分,並且很難讓微軟爲該軟件編寫64位版本。

無論如何你想用無證DLls做什麼? Microsoft與您沒有代碼合同來保持界面正常工作。事實上,微軟可能會在下週二推出更新軟件,以完全刪除該DLL。

如果你想與攝像頭的工作,與喜歡的DirectShow或者媒體基金會的官方API的工作。見建議How to stream Webcam in WPF?Video preview in C#。足夠

+0

博覽會。我目前正在使用AVICap窗口類,但我不滿意它的外觀。我決定使用LifeCam DLL作爲另一種快速和骯髒的方法,以獲得更好的預覽質量。我會看看這些鏈接,看看我能否找到更多關於改變質量設置的信息。 – IntStarFoo

+0

AVICap(VFW)在20世紀90年代被廢棄,大多數網絡攝像頭使用DirectShow的工作。 –

+0

我很困惑。是不是不贊成DirectShow?看起來Windows Media Foundation是Vista的建議解決方案,今天仍然有人建議。那是對的嗎? Expression Encoder SDK從哪裏進入? – IntStarFoo

相關問題