[英]How do I reference a 32 bit DLL in a 64 bit project?
我有一個C#2.0項目設置為“任何Cpu”,但它引用的是一個構建32位dll的C ++項目。
當我嘗試在64位機器上運行我的程序時,我收到以下錯誤:
System.BadImageFormatException
未處理消息:無法加載文件或程序集TreeTMHook, Version=1.0.2889.19619, Culture=neutral, PublicKeyToken=null
或其依賴項之一。 嘗試加載格式不正確的程序。
我怎樣才能解決這個問題?
更新
我希望能夠將主項目保持為任何cpu。
謝謝。
如果要在64位計算機上正確加載32位DLL,則需要將.NET項目構建為32位(x86目標)。
RE:更新:
如果您希望將項目保持為“任何CPU”,則需要32位和64位版本的DLL,並確保隨應用程序分發相應的版本。 如果無法將其他項目構建為64位,則必須將.NET項目構建為32位。
您必須強制您的EXE項目以32位模式運行,以便它可以使用該C ++ DLL。 Project + Properties,Build選項卡,Platform Target = x86。
您可能希望看一下這篇文章,它解釋了為什么它不可能,簡而言之,因為您在訪問非托管代碼時正在處理指針。
為了讓你的主項目成為Any Cpu
,你需要提供32位和64位版本的.dll - 這應該是可能的,當你從源代碼構建它時。
然后,您需要為可執行文件提供一個清單,根據平台將其指向右側dll版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.