windows - VC++中如何获取函数的真实地址

标签 windows winapi visual-c++ dllimport

我正在学习 Win32API 。 我的程序有两个功能。 我尝试在 VC++ 中使用 Debug模式。我在调用虚拟函数时设置了断点

void CALLBACK Dummy(){

    printf("\n Hello Dummy Func!");
}

//////////////////////////////////////////////////////////////////////////

int _tmain(int argc, _TCHAR* argv[]){

      (breakPoint) Dummy();
}

当我调用 dumy() 函数时。程序跳转到地址012110D7作为流程代码

Dummy:
012110D7  jmp         Dummy(12113A0h) 

而虚拟函数的实际地址是12113A0h 我的问题是如何获取虚拟函数的真实地址是 12113A0h 当我在 Release模式下运行时,问题得到解决。 这是我第一次加入 StackOver 流程​​。我希望每个人都能帮助我。谢谢 !!嗡嗡声

最佳答案

此 jmp 指令由链接器插入,以支持调试配置中的编辑 + 继续。它允许在调试时编辑和编译代码。通过 jmp 指令的额外间接允许生成不同版本的函数,更改 jmp 目标以使更改生效。

通过“项目 + 属性”、“链接器”、“常规”、“启用增量链接”=“否”关闭“编辑并继续”。

关于windows - VC++中如何获取函数的真实地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6034704/

相关文章:

CreateDialog 返回 0 但得到 ERROR_SUCCESS

c++ - 无法在 Visual Studio 2010 中的自引用对象中分配指针

windows - 从 FireFox 或命令行安装 CAB 文件

windows - GetComputerName WinApi 调用和 %COMPUTERNAME% 环境变量

c++ - Visual Studio C++ 6.0 是否有线程安全队列类?

c++ - 什么是TCHAR字符串以及Win32 API函数的 'A'或 'W'版本?

c++ - MSVC 2008 错误 'Type' 不是结构(尽管它是)

php - simplexml_load_file() : Failed to enable crypto

java - 在 Windows/Linux/Mac 上的 Java 程序中对全局热键使用react?

windows - Bonjour DNS-SD 回调未被调用,我的代码中存在错误吗?