gpt4 book ai didi

c# - 基于OS平台的DllImport

转载 作者:太空宇宙 更新时间:2023-11-03 11:47:29 25 4
gpt4 key购买 nike

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

最佳答案

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

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

关于c# - 基于OS平台的DllImport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3034733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com