2014-10-31 150 views
0

我有一個DLL(WisSensorNLibLib.DLL)問題的工作,我有生物指紋掃描儀使用。問題在於,DLL方法在WinForms應用程序(例如驗證指紋)中運行良好,但由於我目前正在開發控制檯服務器應用程序,因此我想在該應用程序上使用這些方法。它沒有顯示任何錯誤,我引用了DLL,我用regsrv32註冊了它,但似乎沒有任何工作,每次測試以驗證指紋返回不匹配...即使要比較的樣本都是相同的,或者在數據庫上收到一個客戶端應用程序和比較樣本,或者即使雙方都硬編碼...DLL中的WinForms,但不是在控制檯應用程序

有沒有用的DLL和控制檯應用程序使用任何不兼容?這兩個客戶端應用程序(WinForm的)和服務器(控制檯)使用的是.NET框架4.5

+0

沒有具體細節,很難給出真正的答案。但是WinForms和控制檯之間最明顯的區別在於,WinForms入口指針用'[STAThread]'標記,並且WinForms有一個消息抽取循環。你的DLL可能依賴於其中一個或另一個,但是我會開始向你的Main()方法中添加'[STAThread]'。當然,您應該仔細檢查DLL文檔以完全理解它的實際要求。 – 2014-10-31 05:04:23

+0

嘗試設置你的項目目標明確的x86代替任何的CPU,這將意味着你需要在C 32位REGSVR32註冊DLL:\ WINDOWS \ SYSWOW64 \ regsvr32.exe的 – Shane 2014-10-31 05:55:25

+0

THX你的答案,我都嘗試過,並沒有運氣。 COM DLL文檔沒有指定任何特定內容,只是您可以使用的方法。我想我會被迫將我的解決方案遷移到一個winform應用程序。 – 2014-10-31 17:31:07

回答

0

這使我想到的唯一的事情是,當你在winform工作DLL調用從STAThread執行。當您的應用程序啓動時,Main方法的線程將具有MTA狀態。當您指定STAThread時,您可以強制該線程獲取STA狀態。

相關問題