调用与代码在同一模块(DLL/EXE)中定义的未导出函数很简单:只需像调用任何其他C++函数一样调用它们.显然这不是你所要求的.如果要在不同的模块中调用未导出的函数,则需要以某种方式查找其地址.
一种方法是让第一个模块在第二个模块中调用导出的函数,该模块返回一个函数指针.(或者:包含函数指针的结构,指向类实例的指针等).考虑工厂模式.
另一种方法是从第一个模块导出注册函数,并让第二个模块的初始化代码调用它,将指针传递给未导出的函数以及某种识别信息.(最好还有一个相应的注销功能,在卸载第二个模块之前调用它.)
另一种方法是使用调试符号dbghelp.dll.这不适用于实际应用,因为它需要分发调试符号,并且速度极慢,更不用说过于复杂了.
| 归档时间: |
|
| 查看次数: |
1618 次 |
| 最近记录: |