我正在開發一個應用程序(C#winforms),它依賴於供應商提供的與硬件通信的DLL。.NET目標框架如何影響第三方DLL的加載?
如果讓我選擇.NET 4中(或其他更高)的目標框架,我得到嘗試調用的參考DLL的方法當出現以下消息:
DllNotFoundException:無法加載DLL「somelibrary .dll':對內存位置的訪問無效。 (來自HRESULT的異常:0x800703E6)
如果我選擇.NET 2.0或3.0的目標框架,則不會發生該錯誤。
我懷疑存在不兼容性或庫比.NET 3.0早。
這很可能是由於.DLL啓動了一個可執行文件,它充當應用程序和串口之間的通信處理程序。我曾嘗試將該應用程序設置爲使用各種兼容模式,並以管理員身份運行,但未成功。
我能做些什麼來避免這個錯誤,並針對更現代的.NET平臺,如4.5或更高版本? (或者我是否因爲使用了一個潛在的老DLL而被卡住了?)
應用程序平臺目標是x86,我正在使用默認設置的UAC在Win7 x64上開發。
是否您嘗試加載的.net程序集?你有沒有試過用'ildasm.exe'打開它?是否有'fuslogwv.exe'提供的其他信息? – ironstone13
@ ironstone13我會進一步調查你所建議的工具。我不確定裝配的類型。 – JYelton