如何解决在Visual Studio项目中使用_penter函数会导致堆栈溢出
我遵循了official guide,使用命令提示符分别编译代码,输出二进制文件运行良好。 但是为了将这些代码放在一起,我编写了一个标题profile.h
#pragma once
#include <stdio.h>
extern "C" void __declspec(naked) __cdecl _penter(void) {
_asm {
push eax
push ebx
push ecx
push edx
push ebp
push edi
push esi
}
printf_s("\nIn a function!");
_asm {
pop esi
pop edi
pop ebp
pop edx
pop ecx
pop ebx
pop eax
ret
}
}
和一个cpp,profile.cpp
#include<stdio.h>
#include "profile.h"
void blabla() {
}
int main()
{
blabla();
}
并在配置属性> C / C ++>命令行属性页>其他选项中添加/Gh
选项。
但是,运行输出始终会导致堆栈溢出错误,似乎_penter函数不断调用自身。
我尝试了另一种方法,使用cl编译_penter函数(就像官方指南一样,输出是penter.obj),然后将其复制到Visual Studio项目中,在项目配置属性中,添加其他选项/Gh penter.obj
但是这种方法不起作用,penter.obj会导致许多编译错误。
那么,如何正确使用/ Gh选项?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。