2011-11-03 119 views
2

我的C#應用​​程序我想調用一個Delphi DLL構建爲64位。我一直收到一個錯誤,指出「試圖加載程序的格式不正確(來自HRESULT的異常:0x8007000B」)。我在Windows 7 64位計算機上運行,​​並將我的C#項目設置爲任何CPU。在64位機器上調用64位Dephi DLL從C#在64位機器上

API調用

[DllImport("Cipher.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.ThisCall)] 
public static extern void Encrypt(StringBuilder szPlainText, StringBuilder zCipherText); 

Encrypt(plainString, encText);  

如果德爾福DLL被建設成爲32位此調用正常工作。任何想法?

+1

'ThisCall'是錯誤的。德爾福不這樣做。使用'stdcall'。 –

回答

4

出於某種原因,你的應用是不是64位的運行,而是一個32位如果你需要這樣做,最好指定「x64」而不是「AnyCPU」。

+2

如果有任何疑問,ProcessMonitor(SysInternals.com)將驗證主機進程是以64還是32運行。 –

+0

如果應用程序是32位的,那麼可能沒有一個好理由製作64位DLL 。這聽起來很酷,就是這樣。除非你有一個64位應用程序,或者正在構建一個外殼擴展DLL,否則僅僅因爲操作系統是64位就不需要64個。 –

+0

(或泛化:插入64位,操作系統,IE或第三方的東西) –