2010-06-14 58 views
2

我有非託管代碼(後端)和託管代碼(前端)的混合體,因此,我需要從託管代碼調用非託管代碼,使用互操作技術和DllImport屬性。基於OS平臺的DllImport

現在,我編譯了兩個版本的非託管代碼,用於32位和64位操作系統;它們分別被命名爲service32.dllservice64.dll。所以,在我的.Net代碼,我將不得不兩個dll文件做了DllImport

[DllImport(@"service32.dll")] //for 32 bit OS invocation 
public static void SimpleFunction(); 

[DllImport(@"service64.dll")] //for 64 bit OS invocation 
public static void SimpleFunction(); 

,並呼籲他們根據我的應用程序運行在哪個平臺上。

現在的問題是,對於每個非託管函數,我必須聲明兩次,一次是32位操作系統,一次是64位操作系統。這是一個重複的工作,每次我更改非託管函數的簽名時,都必須在兩處對其進行修改。

有無論如何,我可以改變DllImport參數,以便正確的dll將被自動調用,具體取決於平臺嗎?

+0

automagically !!!!!!! – 2010-06-14 02:50:02

+0

它對我來說看起來不像Fortran。 – 2010-06-14 08:30:42

+0

@高,代碼是C#,互操作代碼。 – Graviton 2010-06-14 10:06:29

回答