2012-07-11 116 views
2

我需要從x64代碼訪問x86 dll(第三方,無法訪問源代碼)。我的研究表明把DLL放在一個COM +包裝中,並作爲OOP服務訪問是最合適的方法。從x64代碼訪問x86 COM +服務器

到目前爲止這麼好。

因此,遵循「NET 2.0互操作性食譜​​ - 問題解決方案方法」(儘管我運行VS2010和.NET4)的指導。我構建了一個概念驗證服務(DLL)和測試客戶端(EXE),作爲服務器應用程序運行的服務是OOP。他們都工作,並通過組件服務禁用該服務殺死它,所以它似乎使用正確的路線。

這全在x86中。

當我將客戶端更改爲x64時,我得到一個'BadImageFormatException',我期望如果它只是加載x86 dll,但應該運行OOP。

我知道我錯過了一些東西,它可能很明顯。

其他注意事項:

1)我跑regsvcs生成後,和regsvcs/U預生成 2)DLL問題被卡住的是,我的主要的基本代碼必須是64

回答

0

您需要強制程序在所有平臺上以x86模式運行。進入主程序集的屬性,然後在「Build」選項卡中,將「Platform Target」從「Any CPU」更改爲「x86」。這將強制所有組件以x86模式運行,即使在x64機器上也是如此。

+0

它們都不是任何CPU,服務器是x86,客戶端是x64。我不希望客戶端在x86中運行,這會破壞使用COM +的全部目的,因爲我可以在代碼中使用dll。 – Oybon 2012-07-11 10:22:55