我有非托管代码(后端)和托管代码(前端)的混合,因此,我需要使用互操作技术和DllImport
属性从托管代码中调用非托管代码。
现在,我为32位和64位操作系统编译了两个版本的非托管代码;它们分别命名为service32.dll
和service64.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 :(得分:2)
我不认为DllImport支持,你可以手动调用LoadLibrary等。
但请看Parameterising DllImport for use in a C# application那些也适合你的答案。