问题标签 [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 失败
我在我的作业项目中加载 DLL 时遇到问题。
这是头文件:
我省略了有效且与问题无关的代码。基本上,hinstLib
is notNULL
但是当行Filter = (FILTPTR) GetProcAddress(hinstLib, "Filter");
执行时,Filter
没有任何价值。对我来说,似乎是说找到了 DLL,但在 DLL 中找不到函数“Filter”,我不知道为什么,尽管我可能是错的。我仍然没有弄清楚其中一些是如何工作的。
这是DLL:
有什么想法吗?非常感谢所有帮助!
- 詹姆士
c++ - GetProcAddress 的 lpProcName 中是否有 DLL 函数修饰的参考?
我试图理解和预测如何引用 DLL 中的函数。
当我们在访问的几个 DLL 中引用一些函数来进行一些计算时,在一些函数中,我们只是使用进程名称作为参数lpProcName
(例如"my_calc_function"
)。但是,在其他一些函数中(对于不同的 DLL),我们必须向lpProcName
(例如"?my_other_calc_function@@YA...."
)添加各种装饰
在一种情况下
在另一种情况下
但是,这两项工作都有效,我想了解装饰的含义以及可以在哪里引用它们,以便在编写代码时可以预见它们。
memory-management - 在 C++ 中使用时如何释放在 GetProcAddress() 中分配的资源?
我正在将 C++ DLL 动态加载到用 C++ 编写的 exe 中。
我的要求是
1) 使用 LoadLibrary() 动态加载 DLL
2) 多次调用 GetProcAddress 以分配与在 DLL 中调用的函数相同的函数指针具有相同的签名。
3) 那么在调用第二个函数 (Function_2) 之前,我是否必须在我的代码中为 lpfn 函数指针释放任何资源?
python - Python- GetProcAddress 使用 ctypes 返回 NULL
问题:
我正在尝试获取LoadLibraryW
但得到的地址NULL
。
研究努力:
该函数成功检索到kernel32.dll
映射到 python 进程的地址,但返回NULL
的LoadLibraryW
地址带有126 错误代码。
当我检查进程黑客(在 python 进程下)中的函数地址时,我看到了一个有效地址。
我尝试了其他库和其他功能,但它总是返回NULL
.
c++ - “dll_file”可能是“0”:这不符合函数“GetProcAddress”的规范
所以我想使用我创建的 DLL,我有一个非常奇怪的警告,我没有看到任何人有这个。我检查了是否LoadLibray
返回“NULL”,但事实并非如此。
第 8 行警告:“'dll_file' 可能是 '0':这不符合函数 'GetProcAddress' 的规范。”
一切正常,当我运行它时它不会写任何错误。
dll - 如何将注入的DLL的远程Proc地址获取到另一个进程中
创建此应用程序 1) 控制台应用程序 2) InjectedDLL - 用于注入进程的 DLL 项目
1)控制台应用程序我已经使用notepad.exe进程ID并将我的DLL注入记事本。2) 我在注入的 dll 中创建了一个导出方法。3) 现在将 dll 注入记事本后,我需要该导出方法的 proc 地址。
我在这里编写了代码来获取它,但它没有调用该方法并使其崩溃。
我在这里附上示例代码。运行它只需要给出 dll 的完整路径。const WCHAR INJECTED_DLL_FULL_PATH[] = L"DLL 的完整路径"; 只有改变这条路径,其他一切都会奏效。
我无法获取注入的 dll 的 proc 地址。任何人都可以帮助我。
/
控制台应用程序代码
远程操作.h
// 远程操作.cpp
Injectdl DLL 暴露方法
DLL 主 cpp
定义文件
c - Win32 等效于 dlopen(NULL, ...)
dlopen(NULL, ...)
在 Windows 上有一个简单的等价物吗?
POSIX(或至少 Linux)上的行为是:返回的句柄可用于查找可执行文件以及相关共享对象上的导出符号。简单来说,如下
做dlsym(lib, "memcpy")
将返回符号memcpy
。
在 win32 上,GetModuleHandle(NULL)
几乎是等价的,只是不搜索符号的依赖 DLL 集;GetProcAddress(lib, "memcpy")
返回NULL
。
任何想法?注意:当然,在我的应用程序中,我不想仅仅访问memcpy
,而是一些更复杂的符号,并且来自 FFI。
dll - 将 OpenMP 和 Intel Visual Fortran 与 Windows GetProcAddress 结合使用
我正在通过 Microsoft Visual Studio 2015 IDE 使用 Intel Fortran Compiler 15.0。我正在学习 OpenMP 以(最终)并行运行我的代码部分。我的代码需要从 .dll 加载子例程。我有以下程序加载带有 HelloWorld 子例程的 .dll 并调用该子例程;下面的代码在一个简单的控制台应用程序中执行得很好。
这是“HelloDLL.dll”的代码
为了启用 OpenMP 指令,我转到项目 -> 控制台属性(在我的 IDE 中),然后是 Fortran -> 语言,并将“处理 OpenMP 指令”设置为“生成并行代码 (/Qopenmp)”。当我这样做时,没有其他任何事情,对我的源代码进行任何更改,我的代码将不再运行。具体来说,我发现 LoadLibrary 仍然找到 HelloDLL.dll 的地址,但 GetProcAddress 调用返回一个空值 (0)。在主程序代码中是否包含 USE OMP_LIB 或使用任何 OpenMP 指令或函数似乎并不重要。我尝试重命名 paa() 数组,甚至将地址保存为纯整数 - 似乎没有任何效果。
如果您有任何建议或见解,我将不胜感激。显然,启用 OpenMP 不仅仅是允许访问 OpenMP 的功能,我只是无法弄清楚为什么它会对 GetProcAddress 产生任何影响。如果可以的话请帮忙!提前谢谢了。
c++ - 从 DLL 访问结构的成员,在 C++ 中运行时加载
我有以下问题: 在运行时,我加载了 Simulink 模型的 Matlab 生成的 DLL,其中包含模型的输出和输入的结构以及一些方法。
生成的结构和方法的示例(模型的名称是“Test_Scalar”):
在我的 C++ 程序中,我可以加载和执行 init 函数,还可以获得指向该结构的指针。但是,我不知道如何访问结构的成员。这里有人有想法吗?
最好的问候
克里斯