我混合了非托管代码(后端)和托管代码(前端),因此,我需要使用互操作技术和DllImport属性从托管代码中调用非托管代码。
现在,我已经针对32位和64位操作系统编译了两个版本的非托管代码;它们分别命名为service32.dll和service64.dll。因此,在我的.Net代码中,我必须为这两个dlls执行一个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?
发布于 2010-06-14 19:00:41
我不认为DllImport支持这一点,你可以手动调用LoadLibrary等。
但看看Parameterising DllImport for use in a C# application,那里的答案也会适合你。
https://stackoverflow.com/questions/3034733
复制相似问题