Мне нужно добавить двоичный код одной из моих программ c в другой двоичный код из программы c. Как мне это сделать? Мне нужно добавить двоичный контент в мой источник c. И использовать этот источник c для добавления этого двоичного содержимого к существующему двоичному файлу.
По крайней мере, неясно, нужен ли вам двоичный файл в качестве данных для некоторой обработки или вы хотите использовать его функции, поэтому ссылка на сайт это. Да, отредактируйте этот вопрос, пожалуйста.
Возможно, ваша проблема не связана с C, вы можете посмотреть stackoverflow.com/a/4158997
Я уверен, что можно указать компоновщику, что двоичный файл является ресурсом исполняемого файла, поэтому он будет включен в образ.
Я также уверен, что исполняемый файл может получить доступ к ресурсу и записать его, назвать его исполняемым файлом ОС (Windows / Linux / Mac), а затем запустить его.
(A complete solution would depend on the OS)
ну это Linux
В Unix-подобных (включая Linux) вы можете использовать xxd:
xxd -i program
Это генерирует файл заголовка с содержимым файла в виде массива символов, встраивая его в вашу программу.
В Windows вы можете встроить программу как ресурс. В вашем .rc
, используя 200 в качестве идентификатора ресурса:
200 RDCDATA "program.exe"
Тогда в вашей программе:
HANDLE resinfo = FindResource(instance, MAKEINTRESOURCE(200), RT_RCDATA);
HANDLE reshandle = LoadResource(instance, resinfo);
void *data = LockResource(reshandle);
DWORD datasz = SizeOfResource(instance, resinfo);
В любом случае вам нужно будет записать файл в какое-то место, чтобы запустить его. Не забудьте установить исполняемый бит в Unix.
Это может быть Проблема XY. Вам следует редактировать свой вопрос и немного подробнее объяснить, чего вы пытаетесь достичь фактически.