c ++ visual studio 2010 exe资源获得Rebased?

Ray*_*Ray 8 c++ rebase visual-studio-2010

有没有人注意到,如果你导入一个exe作为资源,它会被重新定位,并且似乎它的PE头被重建?

有时候这很刺激.有人知道如何禁用变基!?

在c ++中重现的步骤:

1)编译一个hello world并手动设置其基地址(在属性中),比如说0x1000000

2)制作第二个项目并将问候世界纳入资源.也可以手动设置其基址如上.

3)建立第二个项目

4)从资源中提取exe并用Pe编辑器检查它!它被设置回0x400000.为什么?!

Joe*_*Joe 1

您如何将 EXE 作为资源包含到第二个项目中?

使用这些定义:

#define BINFILE 222
#define IDR_MYFILE 101
Run Code Online (Sandbox Code Playgroud)

如果我将 .rc 文件中的可执行文件引用为指向原始文件,例如:

IDR_MYFILE BINFILE "S:\\mysource\\t1\\Release\\t1.exe"
Run Code Online (Sandbox Code Playgroud)

然后,在提取后,我的嵌入式 EXE 资源不会重新设置基础,而是保留我构建它所用的内容。