-1

У меня есть программа на C++, которую я могу скомпилировать и запустить на Mac OS 10.11 с помощью g++. Я также смог скомпилировать и запустить его на Windows 10 с помощью Visual Studio. Однако, когда я попытался запустить файл .exe на компьютере с Windows 10, на котором не была установлена Visual Studio, Windows пожаловалась, что несколько файлов .dll не существует.

Я хотел бы иметь возможность запускать эту программу на компьютерах Windows, не требуя никакой установки чего-либо. Программа очень проста, состоит из одного файла .cpp и живет только в текстовом терминале. Все, что он делает, это запрашивает ввод, отображает некоторый текст и записывает в файл. Я использую эти библиотеки:

#include <stdlib.h>
#include <stdio.h>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>

Я также пробовал MinGW как в Cygwin, так и на OS X. Оба дают ошибки о ‘stoi’ was not declared in this scope . Я попробовал этот патч безуспешно: https://stackoverflow.com/questions/16132176/problems-with-stdstoi-not-working-on-mingw-gcc-4-7-2 Я не знаю, сделает ли MinGW мой. EXE независимо от других файлов.

Как я могу заставить мою программу работать автономно в Windows, чтобы пользователю не требовалось устанавливать какие-либо DLL-файлы или другое программное обеспечение?

1 ответ1

0

Когда вы компилируете что-то с помощью компилятора Microsoft Visual C++, он компилирует его для динамической связи с DLL-библиотекой времени выполнения MS VC++ (я думаю, что это соответствует версии VS, которая у вас есть, например, VS2010 будет использовать среду выполнения 2010). Предположительно это позволяет им иметь возможность обновлять библиотеки DLL без необходимости перекомпиляции приложения.

Это означает, что вам нужно установить библиотеку времени выполнения на любой компьютер, который будет использовать ваше приложение. Они распространяются как часть распространяемых установщиков Visual C++, доступных на веб-сайте MS. На самом деле на многих компьютерах уже установлены необходимые библиотеки DLL, так как есть много программ, которые устанавливают распространяемый пакет как часть процесса установки. Но это не гарантия того, что это так (честно говоря, меня удивляет, что они не устанавливаются автоматически через обновление Windows).

Существует StackOverflow вопрос здесь , что дает некоторые подсказки относительно того , как статически связать библиотеки времени выполнения , поэтому вам не требуется распространяемые библиотеки DLL , которые будут установлены.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .