У вас есть два основных варианта: либо написать программу на чистом C ++ (или другом языке, который может / будет создавать полностью автономные исполняемые файлы), либо использовать средство обхода зависимостей, чтобы найти, какие библиотеки DLL необходимы, и упаковать их в программа установки.
Вариант, который вы предлагаете (взять существующий исполняемый файл, зависящий от некоторых DLLS и попытаться «внедрить» DLL в исполняемый файл), практически не работает. Теоретически, вы можете (например) создать программу установки как исполняемый файл и просто заставить пользователя перезапускать программу установки каждый раз, когда он хочет запустить вашу программу. Это обычно добавляет достаточно накладных расходов, что, вероятно, вашим пользователям не понравится.
Аналогично, вы можете поместить DLL в исполняемый файл в качестве бинарного ресурса и использовать FindResource
, LoadResource
и т. Д., Чтобы записать его содержимое во временный файл - но это требует некоторого полупрограммного программирования и это все еще накладывает изрядное количество накладных расходов.