Я пытался использовать Microsoft Visual C ++ #pragma section( ".text" ) и __declspec(allocate(".text")) для статических строковых данных только для чтения.Но в бинарном файле все еще есть раздел .rdata.Я НЕ использую стандартные библиотеки Си.Я использую MSVC ++ в качестве компилятора байт-кода для использования с внедрением кода.
#pragma section( ".text" )
__declspec(allocate(".text"))
.rdata
Это значительно упростит внедрение, поскольку данные доступны только для чтения внутри раздела ".text", а не раздел ".rdata".Как я могу это сделать?есть ли опция компоновщика для объединения всего в один раздел или объединения двух разделов вместе?
В компоновщике Microsoft есть опция merge sections. Похоже, это будет работать для моих целей. /MERGE:[from=to]
merge sections
/MERGE:[from=to]
Поместите все строки и другие статические данные в стек вручную.
Так что вам не нужны другие разделы, кроме .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' };