问题标签 [getprocaddress]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
291 浏览

windows - 在运行时检查程序中是否存在函数

我正在编写一个程序,该程序旨在通过某些函数定义进行扩展。编译程序的一种方法是创建一个将您的代码链接到主代码的可执行文件。问题是:要定义的功能之一是可选的,我需要对此进行测试。

在 Linux 上,这是我正在做的事情:

使用 g++ 的“-rdynamic”选项或 ld 的“--export-dynamic”选项编译程序。然后,像这样使用 ldsym:

如果程序中存在函数“fct”,则返回其地址,否则返回NULL。

现在,在 Windows 上,我应该能够这样做:

但是 MinGW32 上的 g++ 没有“-rdynamic”或“--export-dynamic”选项!所以这行不通。有人知道在 Windows 上用 MinGW32 做什么吗?

0 投票
3 回答
4723 浏览

c++ - 使用 LoadLibrary 和 GetProcAddress 调用 WinSock 函数

基本上我有一个这样的头文件:

然后我做这样的事情:

但是,当我调用此函数(带有 (*start)(test, &wsdata) 的行)时,我收到以下错误消息:

sockets.exe 中 0x7868146a 处未处理的异常:0xC0000005:访问冲突。

我尝试更改调用约定(__cdecl、WINAPI、WSAAPI),但它总是以相同的错误消息结束。

0 投票
1 回答
723 浏览

dll - 基于可变参数调用任何 dll 函数

我在结构中有以下项目:
- Dll 名称(绝对/相对路径)
- dll 中的函数名称
- 参数数量
- 参数类型和值的数组

有了这些信息,我需要加载 dll 并调用函数。
要加载 dll,我会使用 LoadLibrary。
要获取函数的地址,我会使用 GetProcAddress。
调用函数。
要卸载 dll,FreeLibrary

由于函数的参数数量是动态的,我不确定如何将参数传递给函数。

谁能提供一些有关如何将参数传递给 dll 函数的详细信息?

谢谢和问候, V Karthick

0 投票
2 回答
1374 浏览

winapi - GetProcAddress 如何工作

我做了一些谷歌搜索,但并没有真正找到太多。GetProcAddress 是如何工作的?幕后发生了什么?方法名称和它们对应的地址是否存储在元数据中的某个地方?

0 投票
3 回答
89583 浏览

dll - 在 64 位应用程序中加载 32 位 DLL 库

有没有办法加载 32 位 DLL 库(与 LoadLibrary 的用法相同)我想将该函数与 GetProcAddress 一起使用。

我查看了 WOW,但它似乎没有提供该功能。该功能应该存在,因为像 DependencyWalker 这样的工具能够读取 32 位 dll 的符号,即使它是 64 位的。

谢谢

0 投票
2 回答
7617 浏览

dll - GetProcAddress 找不到我的函数

我用一个名为“render()”的函数创建了一个 DLL,我想将它动态加载到我的应用程序中,但 GetProcAddress 找不到它。这是 DLL .h:

这是 DLL .cpp:

这是尝试使用该功能的应用程序:

我的目标是使用统一的 API 通过自己的 .DLL 制作一个支持 D3D 和 OpenGL 的 3D 引擎。我查看了记事本中的 .dll 并且有一个字符串“render”。

0 投票
2 回答
7129 浏览

c# - dllimport 和 getProcAddress 之间的区别

首先,我知道直接比较 dllimport 属性和 getProcAddress 函数是没有意义的。相反,我有兴趣比较两段代码,它们基本上实现了相同的事情——调用 dll 中的函数——通过使用 dllimport 属性或 getProcAddress 函数导入函数。具体来说,我正在编写一个 C# 应用程序,它使用我编写的 dll 中的某些函数。起初,我使用以下代码访问了我的 dll 函数:

但是,我后来需要获取 lastError 值,如果它是在 dll 调用期间设置的,所以我将代码更改为:

这当然更整洁,并且如前所述,它设置了 lastError 代码。显然,我的第一段代码让我可以在运行时更改 dll 和函数调用,但目前这不是必需的。所以我的问题是:如果我确定我不会使用另一个 dll 或另一个函数,是否有任何理由使用第一个公式?

0 投票
4 回答
15629 浏览

c# - C# GetProcAddress 返回零

出于某种原因,每当我的 C# .NET 2.0 应用程序调用它时,GetProcAddress它总是返回零。

我确定函数名称拼写正确,并且_fullPath可能是正确的,因为_dllHandle它总是被分配一个非零值。感谢您提供的任何见解。谢谢。

0 投票
1 回答
682 浏览

winapi - 如何从 x86 进程中的 x64 进程中找到 user32.dll 函数地址?

如何从 x86 进程中的 x64 进程中找到 user32.dll 函数地址?

编辑:我的意思是我的程序运行 x64,我搜索一个 x86 地址。

0 投票
1 回答
488 浏览

delphi - Delphi 和 C++ WinAPI 函数的地址不应该不同

在 C++ 中,如果您尝试获取 Windows API 函数的函数指针,则该指针指向的地址与您使用GetProcAddress该函数的名称及其各自的模块时所获得的地址相同。例如:

将是true。但是,在 Delphi 中,情况并非如此。这段代码:

不会,在我的测试中,等价物返回测试的 C++ 对应物时,.true@MessageBoxA0x0040bd18GetProcAdress0x7550fd1e

所以现在我的问题是:为什么?