小编shr*_*iek的帖子

使用Environment.Is64BitProcess从c#应用程序动态调用32位或64位DLL

我正在开发一个用 C# 编写的 .NET 4.0 项目(通过 Visual Studio 2010)。有一个需要使用 C/C++ DLL 的第 3 方工具,并且有 C# 中的 32 位应用程序和 64 位应用程序的示例。

问题是 32 位演示静态链接到 32 位 DLL,而 64 位演示静态链接到 64 位 DLL。作为一个 .NET 应用程序,它可以作为 32 位或 64 位进程在客户端 PC 上运行。

.NET 4.0 框架提供了Environment.Is64BitProcess 属性,如果应用程序作为64 位进程运行,该属性将返回true。

我想做的是在检查 Is64BitProcess 属性后动态加载正确的 DLL。然而,当我研究动态加载库时,我总是会想到以下内容:

[DllImport("kernel32.dll")]
public static extern IntPtr LoadLibrary(string dllToLoad);

[DllImport("kernel32.dll")]
public static extern IntPtr GetProcAddress(IntPtr hModule, string procedureName);

[DllImport("kernel32.dll")]
public static extern bool FreeLibrary(IntPtr hModule);
Run Code Online (Sandbox Code Playgroud)

看来这些方法是专门针对 32 位操作系统的。有 64 位等效项吗?

只要基于 Is64BitProcess 检查调用适当的方法,静态链接 32 …

c# .net-4.0

4
推荐指数
1
解决办法
7856
查看次数

如何编写一个程序来告诉我的其他程序什么时候结束?

如何编写一个程序来告诉我的其他程序什么时候结束?

halt exit

2
推荐指数
1
解决办法
1011
查看次数

标签 统计

.net-4.0 ×1

c# ×1

exit ×1

halt ×1