Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/40: Рейтинг темы: голосов - 40, средняя оценка - 4.85
 Аватар для eXPonent
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170

Компилирование EXE для других Win

28.04.2017, 23:27. Показов 9273. Ответов 36

Студворк — интернет-сервис помощи студентам
Пишу переводчик игры на С++
хотелось бы что бы он был кросс-платформенный
хотя бы для операционок семества Windows (XP и выше)

Но при запуске на некоторых машинах требует библиотеки

Я могу с помощью распаковщика sfx распаковывать в нужную для меня папку
(там где нужна dll, например в том случае если она отсутствует)
и оттуда запускать программу

Вопрос какие dll для каких операционок нужны (отличаются ли они между собой)?

Или можно сделать сразу все в одном EXE + dll ?

Эта стать подойдет мне для изучения?
GCC - компиляция C/C++ программ
или она то же требует dll
(как и скомпилированная программа в VS 2010)
может есть какие онлайн компиляторы, которые способны сделать самодостаточный файл?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.04.2017, 23:27
Ответы с готовыми решениями:

Неуловимый .exe (?) Компилирование в VS 2012
Здравствуйте, уважаемые форумчане! У меня возникла проблема с Visual Studio 2012. На любую попытку скомпилировать программу он, редиска,...

Запуск *.exe на других ПК
появилась проблема. написал программу на Microsoft Visual C++ 2010 Express и теперь нужно запустить её "exeшник" на другом...

Не запускается Exe файл приложения на других ПК
Написал программу с использованием openCV, нужно чтобы она запускалась на других ПК. Скопировал в папку к экзешнику необходимые библиотеки,...

36
298 / 107 / 31
Регистрация: 12.03.2012
Сообщений: 449
02.05.2017, 13:35
Студворк — интернет-сервис помощи студентам
eXPonent,
[strike]Все эти либы должны вшиваться при /MT[/strike]
А нет - обманул, если речь о dll студии, то нужно таскать с собой редист/dllки
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
02.05.2017, 13:57
Цитата Сообщение от h3mbr0 Посмотреть сообщение
А нет - обманул, если речь о dll студии, то нужно таскать с собой редист/dllки
При /MT никакие редисты не нужны.
0
 Аватар для eXPonent
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
02.05.2017, 15:45  [ТС]
Цитата Сообщение от gru74ik Посмотреть сообщение
Актуальная 2015-я, вообще-то.
Цитата Сообщение от eXPonent Посмотреть сообщение
Означает ли это что:
приложения созданные в VS 2010 не обязательно должны поддерживаться системами
Windows 7 Service Pack 1, Windows 8 и Windows 8.1
А что по поводу других вопросов?

Добавлено через 7 минут
Цитата Сообщение от h3mbr0 Посмотреть сообщение
[strike]Все эти либы должны вшиваться при /MT[/strike]
А нет - обманул, если речь о dll студии, то нужно таскать с собой редист/dllки
у меня на компе запустилась без dll
ОС: XP SP3

Делал так:
Цитата Сообщение от Убежденный Посмотреть сообщение
При /MT никакие редисты не нужны.
просто нет возможности пока что проверить на win 8 и выше, поэтому
0
298 / 107 / 31
Регистрация: 12.03.2012
Сообщений: 449
02.05.2017, 15:49
Убежденный,
Тоже всегда был в этом уверен, но я тоже помню какие-то косяки с версией 10 и тем, что она не линковалась статически
Может только с 'd' версией было связано, не помню
eXPonent,
Каких вопросов? =) Задайте заново что еще актуально
Хотя вы бы уже все сами проверить успели
0
 Аватар для eXPonent
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
02.05.2017, 15:54  [ТС]
Вот:
Цитата Сообщение от h3mbr0 Посмотреть сообщение
Если имеются ввиду уже скомпилированное приложение, но запускаемое под разными версиями windows, то может недоставать каких-нибудь функций в ядре или хуже - флагов(смотрите 3 параметр LoadLibraryEx на msdn, если интересно) + будут небольшие различия если x86 приложение запустить под x64, но это уже на поведение не повлияет. Чтобы избежать этого, убедитесь что каждый идентификатор из Windows.h который вы используете поддерживает необходимые вам версии Windows
Вообще, пока вы используете только стандартные средства C/C++ и грамотно выбираете типы данных, ваш код будет работать одинаково на всех современных системах, исключения составляют system() и некоторые аспекты при работе с IO, особенно с консолью
Если используете что-то платформо-зависимое, либо пишите код для всех нужных платформ сразу, либо ищите кросс-платформенный аналог
Добавлено через 6 минут
И если компилите в студии и нужна поддержка XP, начиная с какой-то версии компилятора, нужно отдельно ставить Windows XP platform toolset и выбирать его в конфигурации проекта
Цитата Сообщение от eXPonent Посмотреть сообщение
Если мне известен заранее результат (например я знаю какой файл должен в теории получиться)
могу ли вычислить хэш файла и сравнить его с образцом ???
Таким образом я узнаю на какой машине код сработал по другому
Цитата Сообщение от h3mbr0 Посмотреть сообщение
А какой смысл? Вы не узнаете как он сработает, функции ядра так в ядре и останутся, ваш файл будет одинаковый
Цитата Сообщение от eXPonent Посмотреть сообщение
А мне не обязательно знать каким образом он сработал
мне главное знать, что файл который будет на выходе XML
будет таким же как образец получившийся на моей машине
Цитата Сообщение от h3mbr0 Посмотреть сообщение
Вы про это не упоминали
Что за файл, каком образом создается? Хэш-сумму то, конечно, можете проверять, если XML каждый раз будет одинаковый
Цитата Сообщение от eXPonent Посмотреть сообщение
именно так если например входной файл имеет хэш X имеется база переводов с хэшом Y то выходной файл обязательно получится с хэшем Z
Хэш очень важен, так как эти файлы нужны для игры по сети и они не могут быть разные по определению
Хочется узнать как проще всего вычислять хэш
0
298 / 107 / 31
Регистрация: 12.03.2012
Сообщений: 449
02.05.2017, 15:58
Я не понимаю в чем суть ваших XML, и все равно не верю что могут сгенерится разные файлы
В любом случае, хотите хэш - выбирайте функцию, ищите имплементацию, забирайте себе и используйте, в чем трудность?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
02.05.2017, 17:13
Цитата Сообщение от h3mbr0 Посмотреть сообщение
Может только с 'd' версией было связано, не помню
Для 'd' (Debug, да?) опция /MT не подходит, там нужна другая - Multi-Threaded Debug (/MTd).

Цитата Сообщение от eXPonent Посмотреть сообщение
Распространяемый пакет Microsoft Visual C++ 2010 Этот способ пожалуй самый правильный и наиболее безопасный.
Ну и что в нем правильного и безопасного?
Во-первых, ты мог разрабатывать свою программу в Visual Studio 2010 SP1.
А пользователь мог по ошибке поставить VC Redist 2010, который без SP1.
В итоге получаем почву для различных багов (правда, редких).

Во-вторых, для portable-программ заставлять юзера ставить всякие пакеты - это лишнее.
Гораздо разумнее просто закинуть две dll в папку с программой.

Держать на компьютере свалку из всех мыслимых версии vcredist - это кто ж захочет?
1
298 / 107 / 31
Регистрация: 12.03.2012
Сообщений: 449
02.05.2017, 18:27
Цитата Сообщение от Убежденный Посмотреть сообщение
Для 'd' (Debug, да?) опция /MT не подходит, там нужна другая - Multi-Threaded Debug (/MTd).
Нет, речь не об этом
Если статик-либа была собрана с обычным рантамом, а а проект который ее использует - с дебаг, то в какой-то версии 10 студии абсолютно точно один из рантаймов не линковался статически, но тут это не имеет значения в любом случае
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
02.05.2017, 18:37
Цитата Сообщение от h3mbr0 Посмотреть сообщение
Если статик-либа была собрана с обычным рантамом, а а проект который ее использует - с дебаг
Ну так рантаймы всегда должны совпадать. И по конфигурации (debug/release),
и по платформе (x64/ARM/Itanium/x86), и по номеру версии, и еще по другим параметрам.
Иначе либо не будет собираться, либо будут "странности".
0
298 / 107 / 31
Регистрация: 12.03.2012
Сообщений: 449
02.05.2017, 18:42
Убежденный,
Обычно собираются, но странности действительно есть, потому и упомянул про это
0
 Аватар для eXPonent
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
02.05.2017, 19:37  [ТС]
Цитата Сообщение от h3mbr0 Посмотреть сообщение
Я не понимаю в чем суть ваших XML, и все равно не верю что могут сгенерится разные файлы
В любом случае, хотите хэш - выбирайте функцию, ищите имплементацию, забирайте себе и используйте, в чем трудность?
Вот нашел:
Получить хеш файла (CRC32, MD5, SHA1, TTH, ED2K, BitPrint, AICH....)

что проще реализовать?
(желательно без подключения внешних библиотек)
0
298 / 107 / 31
Регистрация: 12.03.2012
Сообщений: 449
02.05.2017, 19:58
eXPonent,
Зачем что-то реализовывать? не хочется лишних библиотек - в гугле вбивается "имплементация алгоритма (...) на C++"(или на си)
Но я не вижу причин не взять ее из openssl, например
0
 Аватар для eXPonent
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
02.05.2017, 20:20  [ТС]
Цитата Сообщение от h3mbr0 Посмотреть сообщение
имплементация алгоритма
А алгоритм абсолютно любой?
Простым языком сколько нужно алгоритмов что бы 99,99% быть уверенным что файл идентичен образцовому
Я так понимаю хватит и одного
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
02.05.2017, 20:48
Даже WinAPI умеет хэши считать.
1
 Аватар для eXPonent
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
03.05.2017, 06:44  [ТС]
А не проще ли весь файл считать в вектор стрингов
и посчитать сумму всех байт
записывая сумму в char[64]
Кликните здесь для просмотра всего текста
aeb7f1823f1bb15dca7f55f143fcb2ec3049651c db329607ecb583a112713144ba7481e2d1e24f58 3585b413cca8128754e5f23d4f1162d13b1fd5cb 9ac0c0f0


или char[16]
Кликните здесь для просмотра всего текста
9860da631da0c96f2b76860ecc7c86d0


может можно даже в обычный
ULLONG_MAX

у него там максимум:
18446744073709551615
2^64 - 1

Добавлено через 5 часов 2 минуты
Решил создать что то типа такого класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <string>
#include <iostream>
 
using namespace std;
 
class strhash
{
private:
    unsigned long long h;
 
public:
    string s;
 
    strhash(){h = 0;}
 
    /*
    void zero(unsigned char &c, char i = 8)
    {
        if(!c){c = h >> i; zero(c, i+8);}
        if(i -= 8) cout << "i = " << (short) i << "; h = " << hex << h << "; h >> i = " << (h >> i) << dec << endl;
    }*/
 
    void count()
    {
        s += '\n';
        h = (unsigned char) *(s.begin());
        for (string::iterator it(s.begin() + 1); it != s.end(); ++it)
        {
            unsigned char c(h);
            // zero(c); - если (с == x00)
 
            h += ((c << 8) + ((unsigned char)*it));
            //cout << hex << (c << 8)  << " + " << (short) ((unsigned char)*it)  << " = "<< ((c << 8) + ((unsigned char)*it)) << endl;
            if(!h) h = c;
        }       
    }
 
    unsigned long long hash(){return h;}
};
 
void main()
{
    strhash s;
    s.s = "<English>Флёты были голландскими суднами, в которых, ради экономичности, вырезано большинство пушек для грузового пространства. Также эти корабли – одни из немногих, что использовали блок и снасти для управления в открытом море. Знаменитые своей грушевидной формой, эти корабли могли с легкостью входить в гавани и идти вверх по рекам, чего другие океанские корабли не могли.<English>";
    s.count();
    cout << hex << s.hash();
    cin.get();
}
не нужно лишнее чтение файлов реализовывать

Добавлено через 1 минуту
сначала хотел рекурсией написать, но потом понял, что это лишнее извращение
решил оставить так
(не проверял ещё функцию, написал в блокноте)

Добавлено через 7 минут
При переполнении я так понимаю, он должен будет начать сначала с нуля и далее
и нужно добавить ещё на обнаружение нуля (подредактировал код)
0
 Аватар для eXPonent
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
04.05.2017, 19:01  [ТС]
Цитата Сообщение от h3mbr0 Посмотреть сообщение
Райтклик по проекту > Properties > C/C++ > Code Generation > Runtime library
Выставить /MT вместо /MD для конфигурации в которой собираете
Файл будет сильно жирнеть по мере использования разных частей рантайма и всего остального, что способно слинковаться статически
Вопрос актуален:
Цитата Сообщение от eXPonent Посмотреть сообщение
Возможно это звучит лишним, но
Могу ли я сделать все это через командную строку
Что бы добавить пункт в контекстное меню Windows ?
Нажал правой кнопкой по файлу выбрал name.cpp
Компилировать в EXE (/MT) - готов name.exe (без зависимостей от других библиотек)
0
 Аватар для eXPonent
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
13.05.2017, 16:50  [ТС]
Цитата Сообщение от h3mbr0 Посмотреть сообщение
Райтклик по проекту > Properties > C/C++ > Code Generation > Runtime library
Выставить /MT вместо /MD для конфигурации в которой собираете
Файл будет сильно жирнеть по мере использования разных частей рантайма и всего остального, что способно слинковаться статически
Скорость работы программы возросла в три раза
Как это работает?
каким ещё образом можно ускорить программу?
(программа раньше работала 3 часа, теперь час)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.05.2017, 16:50

Почему на других компьютерах не запускается exe файл?
http://yadi.sk/d/ZkbUdZzWM5Zcj почему у других не запускается файл exe ??? там у меня программа(форма,файл еxe) для расчёта...

компилирование в exe файл
Здравствуйте помогите плиз! Есть прога на foxpro она не скомпилирована, т.е есть файл с расширением prg и папки: class, dbf, form, menu,...

Компилирование dll в exe(VB2010)
Добрый вечер,у меня такая проблема,я создал проект,для работы которого требуется net dll библиотека,но при компиляции она находится...

Explorer.exe для win 8 pro
Люди, хелп, киньте, пожалуйста, explorer.exe для win 8 pro, очень надо.

Восстановить explorer.exe после заражения для win 8.1
Добрый день. Антивирус удалил explorer.exe посчитав его трояном шифровальщиком. Скиньте пожалуйста чистый explorer.exe Win 8.1 x64...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru