【发布时间】:2012-01-11 04:03:45
【问题描述】:
我正在尝试使用此代码将一段代码分配给一个独立的部分:
#ifdef _MSC_VER
#pragma section(".evil",execute)
#pragma code_seg(".evil")
#endif
#ifdef __GNUC__
static __attribute__((section (".evil")))
#elif defined _MSC_VER
static __declspec(allocate(".evil"))
#endif
void __invoke__start()
{//...
但这不起作用,编译器说
__declspec(allocate()) 语法只能用于静态数据。
我这样做是因为我必须将一些代码写入一个新文件,而该文件是一个可执行文件。
实际上,如果程序是用 MS VC++ 调试模式编译的,我无法在程序运行时找到函数在内存中的确切地址 有关完整示例,请参阅此代码:full example
现在,上面的问题已经解决了,但是我还是想明确一点,如果可以把一些代码放到一个独立的部分。毕竟,当我的工作可能时,还有其他好处。
当我链接两个目标文件(COFF 格式)时,如何确保来自不同 obj 文件的不同代码位于不同部分? 还是有其他方法可以做到这一点?
我很抱歉我的英语不好。
【问题讨论】:
标签: c++ c windows visual-c++ portable-executable