簡體   English   中英

如何在64位項目中引用32位DLL?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM