Как я встраиваю двоичный исполняемый файл (чтобы быть выполненным во времени выполнения) в спокойной программе?

Я пишу межплатформенную программу C++ с помощью QT, и я хочу упаковать/встроить много двоичных исполняемых файлов в рамках программы. Программа должна смочь выполнить эти двоичные файлы во времени выполнения.

Я фигурировал, мне будет нужен QResource, и использование QProcess запускаются () и ":/..." нотация, но я, кажется, не получаю выполнение процесса. Есть ли что-нибудь, что я пропускаю? Это должно работать как это? Двоичный файл должен быть установлен как исполняемый файл?

Фон: Я пишу инструмент, который использует Мерзавца, и я не хочу требовать, чтобы конечный пользователь установил Мерзавца вручную.

(Пробующий это на Mac OS X, BTW.)

Обновление:

Я использую следующий код (C++, QT на Mac OS X):

QString program = ":/git";
QStringList arguments;
arguments << "help" << "commit";
myProcess->start(program, arguments);

Исполняемый файл Мерзавца находится в пути проекта, мои resources.qrc ссылки это как так:


    git

Я не получаю ошибку, но программа не выполнена. Поведение является тем же, когда я установил program в несуществующий файл. Замена ":/git" полным путем мерзавцу работает отлично.

7
задан Peter Mortensen 21 December 2009 в 22:36
поделиться

3 ответа

Вы не можете выполнить программу непосредственно из ресурса.

Если у вас есть программа в ресурсе, и вы хотите ее выполнить, вам сначала придется прочитать ее из ресурс, запишите его в файл, сделайте файл исполняемым, затем выполните его.

Кроме того, когда вы говорите, что не получаете сообщение об ошибке, это, вероятно, означает, что вы не проверяете ошибки должным образом.

10
ответ дан 6 December 2019 в 14:04
поделиться

Не думаю, что ресурсы сработают. Процессы создаются операционной системой, а ресурсы обрабатываются приложением.

Одним из возможных решений может быть объединение дополнительных исполняемых файлов где-нибудь в каталоге вашего приложения и выполнение их из этого пути.

.
2
ответ дан 6 December 2019 в 14:04
поделиться

Значит, проблема не в том, чтобы извлечь git-экзамен из ресурса, а в том, чтобы выполнить его?

Программа git'а корректно генерирует don disk, можете ли вы проверить её права?

0
ответ дан 6 December 2019 в 14:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: