gpt4 book ai didi

c# - 如何在不调用函数的情况下检查C#中是否存在DLL入口点

转载 作者:太空狗 更新时间:2023-10-29 17:48:39 25 4
gpt4 key购买 nike

我正在使用 OpenTK OpenGL 包装器。由于它加载 OpenGL dll(或 Linux 上的 .so),它包含大量 DLL 导入函数。

问题是,有些驱动程序并没有导出所有的函数。有没有办法检查入口点是否存在?我需要这样做,因为如果没有按正确的顺序在具有它的系统上实际调用该函数将导致崩溃。因此,捕获 EntryPointNotFound 异常在我的情况下不起作用。

最佳答案

您可以从 Win32 P/Invoke LoadLibrary 和 GetProcAddress 调用:

[DllImport("kernel32", SetLastError=true)]
static extern IntPtr LoadLibrary(string lpFileName);

[DllImport("kernel32", CharSet=CharSet.Ansi, ExactSpelling=true, SetLastError=true)]
static extern UIntPtr GetProcAddress(IntPtr hModule, string procName);

使用 LoadLibrary 加载模块并获取句柄,使用 GetProcAddress 获取指向入口点的函数指针。如果后者返回错误,则入口点不存在。

关于c# - 如何在不调用函数的情况下检查C#中是否存在DLL入口点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6561332/

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