我将如何在 Win32 C++ 中调用未导出的函数?
最佳答案
调用与您的代码在同一模块 (DLL/EXE) 中定义的未导出函数很容易:只需像调用任何其他 C++ 函数一样调用它们。显然这不是你要问的。如果你想在不同的模块中调用未导出的函数,你需要以某种方式找出它们的地址。
一种方法是让第一个模块调用第二个模块中的导出函数,该函数返回一个函数指针。 (或者:包含函数指针的结构、指向类实例的指针等)想想工厂模式。
另一种方法是从第一个模块导出一个注册函数,让第二个模块的初始化代码调用它,将指向未导出函数的指针以及某种识别信息传递给它。 (最好也有相应的注销函数,在第二个模块卸载前调用。)
还有一种方法是使用 dbghelp.dll
调试调试符号。不建议将此用于实际应用程序,因为它需要分发调试符号并且速度非常慢,更不用说过于复杂了。
关于c++ - 在 Win32 C++ 中调用未导出的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1344629/