Visual c++ 如何在Microsoft VIsual C编译器中声明驻留在特定地址的符号?

Visual c++ 如何在Microsoft VIsual C编译器中声明驻留在特定地址的符号?,visual-c++,msvc12,Visual C++,Msvc12,我想编译一个独立的二进制文件,然后在另一个二进制文件的上下文中逐字节复制(可能使用十六进制编辑器)。我可以通过“/base”选项指定base,但我找不到一种方法来表示: int var@0x30000; //only declare the symbol by its address in the host binary 要将一个可执行文件(或另一个任意blob)的部分(或全部)存储在另一个PE可执行文件中,您可能需要将其存储为二进制资源,然后使用、等进行读取 这也避免了使用十六进制编辑器将b

我想编译一个独立的二进制文件,然后在另一个二进制文件的上下文中逐字节复制(可能使用十六进制编辑器)。我可以通过“/base”选项指定base,但我找不到一种方法来表示:

int var@0x30000; //only declare the symbol by its address in the host binary
要将一个可执行文件(或另一个任意blob)的部分(或全部)存储在另一个PE可执行文件中,您可能需要将其存储为二进制资源,然后使用、等进行读取


这也避免了使用十六进制编辑器将blob嵌入可执行文件的麻烦——您可以使用普通的构建工具(资源编译器和链接器)来处理将数据嵌入可执行文件的问题。

对此没有任何机制,链接器决定东西放在哪里,它没有办法将任何东西固定到特定的地址。您必须使用操作系统函数,如VirtualAlloc(),并祈祷地址尚未使用。如果两个进程需要就内存位置达成一致,则使用内存映射文件。请注意,您询问的是一个解决方案,而没有描述真正的问题,这是一个非常不寻常的问题。@HansPassant的想法是-我想编译另一个可执行文件的一部分。我将手动复制内容。