问题标签 [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.
c++ - GetProcAddress 返回空值
我从 C++ 项目中导出了这个方法
使用 dumpbin 我得到了该方法的以下错误名称
但是,当我在 .NET 4.5 项目中导入该方法时,我收到错误 127
这只是一些提取的代码,其他方法也可以。
java - Java JNA: GetProcAddress returns null
The following code fails to find LoadLibraryW
where GetProcAddress is declared as following:
Does anyone know why? What is my mistake? Thanks!
c++ - c++ WINAPI通过GetProcAddress调用导出函数
我试图通过抓取其函数指针来从 DLL 调用导出的函数,GetProcAddress
但在调用该函数时应用程序崩溃。
我使用dependencywalker 来查看导出的函数是否具有正确的名称。返回的地址GetProcAddress
不为空。我几乎可以肯定它与调用约定有关,我都使用了__cdecl
但__stdcall
没有成功。但是我确实想使用GetProcAdress
而不是__declspec(dllimport)
.
DLL #1(调用者)
将 DLL#2.lib 链接到此 DLL
/li>
DLL #2(包含导出函数的 DLL)
c++ - 如何在运行时像可执行文件一样“启动”DLL?
我想编写一个非常非常小的程序来解析启动参数并选择几个 DLL 中的一个来“启动”。
我已经编写了一个应用程序,我想将其作为 DLL “运行”,方法是将其编写为应用程序,然后更改 Visual Studio 项目属性以将其构建为 DLL。我知道我需要同时使用 LoadLibrary 和 GetProcAddress 来获得我想要的功能,但是我很难找到关于这方面的清晰和全面的文档,因为很多用例并不是真正的这种性质。另外,我必须根据项目和平台限制走这条路线。
我找到了这个页面,其中有一些信息,但不够清楚,我无法适应我的目的。
编辑:这就是我现在所处的位置。
我有一个 DLL 项目,其主要函数签名如下所示:
我还有一个应用程序项目,它尝试加载 DLL 并运行上述函数如下所示:
typedef int (CALLBACK* LPFNDLLFUNC1)(int, char *);
...
目前,LoadLibrary 调用有效,但 GetProcAddress 无效。
c++ - GetProcAddress 函数返回 NULL
我尝试动态加载 C++ dll,首先我使用“LoadLibrary”函数加载了 dll,它正在正确获取它的句柄。之后我尝试使用“GetProcAddress”获取 DLL 文件函数的函数指针,它返回 NULL。请找到我的 DLL 代码和测试应用程序代码,让我知道代码哪里出了问题。
dummy2.h
dummy2.cpp
dummy1.cpp
请参考上面的代码并指导我。
windows - GetProcAddress fails on Win 7 even though the DLL actually exports the function (works on Win 10)
I have a 32-bit application and I have a problem with it on Windows 7 x64. I'm loading a DLL. LoadLibraryW
succeeds and the subsequent call to GetProcAddress
fails with the error code 127 ("procedure not found" or something like that).
The funny part is that I know for a fact the function is exported by the DLL. I made no typos in the GetProcAddress
call. I can see the function with Depends.exe and DllExp.exe. The exact same application binary successfully loads the function from the exact same DLL on Windows 10 x64, but not on Windows 7 x64.
Some more details: the library is dbghelp.dll
and the "missing" function is MiniDumpWriteDump
.
And the fun bit: dbghelp.dll
provides API for inspecting the modules loaded into the process and for enumerating functions exported by those modules. So, first I took the HMODULE
for this problematic dbghelp.dll
and ran
It worked, this function did load! Then I loaded SymEnumSymbols
, written the enumerator callback and finally ran the following to enumerate all the functions in this very `dbghelp.dll":
And what do you know, MiniDumpWriteDump
is, in fact, listed there. Go figure.
Thoughts?
vba - 从 VBA 调用 GetProcAddress 总是返回 null
我有带有 MS Office 64 位的 64 位 Windows 10。我正在尝试让 Powerpoint 的 VBA 加载和执行自写的 64 位 Windows DLL 中的函数。为了防止导出名称损坏,我使用了 extern C:
这个简单的函数可以被 C++ 模块毫无问题地调用:
尝试从 Powerpoint 中的 VBA 调用 DLL 时会出现问题。GetProcAddress 总是返回零,FreeLibrary 也是如此
感激地收到任何帮助。
c++ - 明确加载库的干净方法
我正在寻找一种明确加载库的干净方法。大多数情况下,我有一个 LIB 和 DLL 对,因此 LIB 将处理所有“加载内容”,我可以直接调用 dll 中的函数。明确执行此操作时,我需要执行以下操作:
当我需要调用 DLL 中的函数时,如果在我的代码中发现 LoadLibrary() 和 GetProcAddress() 将会很混乱。我想知道是否有一种干净的方法可以在 1-2 个文件中编写所有处理并调用函数,就好像我通过 LIB 和 DLL 对隐式加载库一样。
c++ - 如何调用外部 c 函数并使用具有 c 风格调用约定的 af 函数导入它?
我正在从外部.dll 在控制台应用程序中导入一个函数,该函数从共享内存中复制一个结构(如果你想测试它,那么任何全局内存都应该工作)
这是dll中的函数
这是我如何将该功能导入控制台应用程序的示例
该函数可以正常导入,但是由于 c 风格的调用约定 _cdecl 将堆栈上的数据返回给函数时出现问题,并且在调用导入的函数时会在此行引发异常:
抛出异常:这通常是调用使用一种调用约定声明的函数和使用另一种调用约定声明的函数指针的结果。
我尝试在声明中加入 _cdecl :
对此:
这并没有帮助,可能是因为我对调用的理解不够,但必须有某种方法告诉 GetProcAddress 它正在使用 c 风格的调用约定进行函数调用。
我的问题是:我使用什么语法来导入使用 GetProcAddress 的 c 风格调用约定的函数?
visual-studio-2010 - 调用 GetProcAddress 结果过程报告 ERROR_FILE_NOT_FOUND
我正在从 c++ 代码访问一个 c++ dll 库(我没有源代码)。我使用这个库来挂载一个 USB 设备,这样我就可以访问设备上的文件。此代码在 VS2010 中运行良好,但自从我们更新到 VS2013 后,它不再运行。这是我的问题。VS2010 和 VS2013 之间的哪些差异可能导致此失败或哪些设置可能导致此失败?
这是我在运行代码时观察到的:
- LoadLibary 调用返回一个模块句柄
- GetProcAddress 似乎返回了一个有效的过程地址
- 在 VS2013 中调用 dyn_Open_Device 总是返回 false,在 VS2010 中几乎总是返回 true。
- 调用 dyn_Open_Device 后,GetLastError 返回 2 (ERROR_FILE_NOT_FOUND)
这是代码:
这是 DUMPBIN 结果: