MSVC ++ - 强制将所有内容放入单个部分,除了`.reloc`

时间:2011-07-18 09:15:01

标签: visual-studio visual-studio-2008 visual-c++ linker

我尝试在静态只读字符串数据上使用Microsoft Visual C ++ #pragma section( ".text" )__declspec(allocate(".text"))。但是二进制文件中仍有一个.rdata部分。我不使用标准C库。我使用MSVC ++作为字节码编译器,用于代码注入。

通过在“.text”部分中包含只读数据并且 “.rdata”部分,可以大大简化注入。我怎样才能做到这一点?是否有链接器选项将所有内容填充到一个部分中,或将两个部分合并在一起?

2 个答案:

答案 0 :(得分:2)

Microsoft链接器中有merge sections选项。这似乎适用于我的目的。 /MERGE:[from=to]

答案 1 :(得分:0)

手动将所有字符串和其他静态数据放入堆栈。

所以你不需要其他部分,除了.text。

char String[] = { 's', 't', 'r', 'i', 'n', 'g', 0 };

和Unicode:

wchar_t WideString[] = { L'H', L'e', L'l', L'l', L'o', L'\0' };