2010-06-14 54 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

回答