Google'ing幾個小時後,我沒有解決這個問題的方法。DllImport沒有在SysWOW64文件夾中找到一個DLL
我開發了一個非託管C++的DLL。我已將該DLL放在SysWOW64文件夾中,因爲這是一個64位計算機。另一方面,我有一個在C#中開發的Winforms應用程序,用於導入DLL中包含的函數。我使用DllImport(「name.dll」),但會引發System.DllNotFoundException。
整個解決方案針對x64平臺進行配置。
如果我將DLL放在可執行目錄中,它就可以工作。
由於開發簡單,我想將DLL放在系統文件夾中。我正在用兩臺不同的電腦(一臺臺式電腦和筆記本)開發這個項目。個人電腦有32位平臺,而筆記本電腦是64位,具有不同的文件夾。
要在兩臺計算機中同步項目,我使用Subversion存儲庫。很明顯,我可以編寫一個Post Build事件來將DLL從C++項目文件夾複製到主可執行文件的輸出文件夾中,但是我每次從筆記本電腦移動到PC時都需要更改Post build命令,反之亦然。
任何想法爲什麼在系統文件夾中找不到DLL?最重要的是,有沒有辦法解決它?
由於 海梅
如果解決方案編譯爲x64,則必須將該dll置於'%SystemRoot%\ System32'文件夾。 '%SystemRoot%\ SysWOW64 \'被32位應用程序(x86)使用 –
當我使用%SystemRoot%\ System32時,系統實際上將該文件複製到SysWOW64中......似乎在內部,如果系統是x64,可能會自動將System32轉換爲SysWOW64,作爲一種別名 – jstuardo