基于OS平台的DllImport

时间:2010-06-14 02:35:58

标签: c# interop

我有非托管代码(后端)和托管代码(前端)的混合,因此,我需要使用互操作技术和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?

1 个答案:

答案 0 :(得分:2)

我不认为DllImport支持,你可以手动调用LoadLibrary等。

但请看Parameterising DllImport for use in a C# application那些也适合你的答案。