gpt4 book ai didi

.net - 针对 "Any CPU"的 .NET 应用程序能否在多个环境中使用 P/Invoke 调用?

转载 作者:行者123 更新时间:2023-12-04 23:32:51 25 4
gpt4 key购买 nike

我有一个使用一些 API 调用的 .NET 应用程序,例如 GetPrivateProfileString .到目前为止,它一直在 32 位机器上运行。

为了在 64 位机器上运行,我必须将“平台目标”更改为“x86”吗?或者有没有办法让运行时知道根据运行时环境调用哪个 API DLL?

最佳答案

您需要确保仅对 64 位 DLL 使用 P/Invoke 调用。

一种选择是将所有“方法”移动到标准接口(interface)(或抽象基类)中,并提供 2 个实现,一个 32 位和一个 64 位。您可以让工厂方法根据 IntPtr 的大小构造适当的类实例。

这允许“AnyCPU”应用程序在运行时正确地确定要 P/Invoke 到哪个 DLL,并且可以正常工作。

关于.net - 针对 "Any CPU"的 .NET 应用程序能否在多个环境中使用 P/Invoke 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2632458/

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