c++ - 在 Win32 C++ 中调用未导出的函数

标签 c++ function winapi

我将如何在 Win32 C++ 中调用未导出的函数?

最佳答案

调用与您的代码在同一模块 (DLL/EXE) 中定义的未导出函数很容易:只需像调用任何其他 C++ 函数一样调用它们。显然这不是你要问的。如果你想在不同的模块中调用未导出的函数,你需要以某种方式找出它们的地址。

一种方法是让第一个模块调用第二个模块中的导出函数,该函数返回一个函数指针。 (或者:包含函数指针的结构、指向类实例的指针等)想想工厂模式。

另一种方法是从第一个模块导出一个注册函数,让第二个模块的初始化代码调用它,将指向未导出函数的指针以及某种识别信息传递给它。 (最好也有相应的注销函数,在第二个模块卸载前调用。)

还有一种方法是使用 dbghelp.dll 调试调试符号。不建议将此用于实际应用程序,因为它需要分发调试符号并且速度非常慢,更不用说过于复杂了。

关于c++ - 在 Win32 C++ 中调用未导出的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1344629/

相关文章:

windows - 如何获取已安装的 Windows 通用应用程序列表?

多线程可以在单处理器系统上实现吗?

c++ - 遍历 boost regex_iterator 结果

node.js - 有没有办法在延迟后停止函数? Nodejs

BASH:如何从函数中正确返回 true 和 false

windows - 为什么 WaitForSingleObject(INVALID_HANDLE_VALUE, INFINITE) 会阻塞?

c++ - 在 LLVM JIT 代码中启用 RTTI 的问题

c++ - 自动调用 removeEventFilter()

C++ 成员函数指针

JavaScript 条纹表行抽象函数