Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Devotion
23 / 21 / 2
Регистрация: 25.12.2011
Сообщений: 61
#1

Как сделать приложение универсальным - C++

08.09.2012, 00:38. Просмотров 706. Ответов 12
Метки нет (Все метки)

Возник такой вопрос: я написал простую программу на с++ (у меня Win 7, IDE - VS 2010), перенес ее на другой компьютер с другой ОС (Win XP), попробовал запустить и получил ошибки "Невозможно запустить, не найдена такая-то dll". Насколько мне известно, с++ транслирует код непосредственно на машинный язык. Как можно создать приложение, которое будет работать на любой машине, независимо от наличия в системе каких-либо библиотек и независимо собственно от того, какая система, и возможно ли это вообще?

Если что-то написал неправильно, поправьте, только начинаю знакомиться с С++)
За понятные объяснения буду очень благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2012, 00:38     Как сделать приложение универсальным
Посмотрите здесь:

Как сделать неконсольное приложение - C++
Консольные приложения я уже худо бедно научился делать, хочется простенькие программки, делать в красивой обертке. Т.е. приложения для...

Как в Code::Blocks сделать визуальное приложение? - C++
кто-нибудь пользовался code::block? подскажите, как сделать визуальное приложение, чтобы там и окошки были и кнопочки. и я смог бы выбрать...

Как из проекта .dll сделать консольное приложение? - C++
Всем привет еще раз, У меня есть еще один вопрос. Пусть я создал новый проект, типа Win32 .dll, а потом решил переделать его и сделать...

Как сделать так, чтобы консольное приложение запускалось на любом пк? - C++
Добрый вечер! Мне нужна помощь. Как сделать так, чтобы консольное приложение на с++ можно было открыть на любом пк? F5 не помогает, так...

Как сделать чтобы приложение автоматически запускалось с заданными правами - C++
Здравствуйте. Как сделать чтобы при двойном клике на приложение оно сразу запускалось с заданными правами?

не меняя эту часть кода(она должна остаться точь-в-точь как выше) сделать так, чтоб запускаемое приложение выводило на экран "hello world!" - C++
задача: дана часть кода: int main(void) { return 0; } не меняя эту часть кода(она должна остаться точь-в-точь как...

Сделать приложение с указателем массива - C++
Дан указатель на массив из 10 указателей типа int. Массив проинициализируйте самостоятельно. Вывести номера индексов массива, чьи элементы...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
08.09.2012, 00:46     Как сделать приложение универсальным #2
свойствах проекта в разделе «C/C++ -> Code Generation» нужно свойство «Runtime Library» выставить в «Multi-threaded (/MT)»
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
08.09.2012, 00:46     Как сделать приложение универсальным #3
Можно. Таская с собой все эти библиотеки, если не хочется их писать руками. Либо берёте сразу библиотеки с собой в виде *.dll рядом с программой, либо линкуете их статически, тогда они будут сразу внутри программы (понятия не имею, как это делается в Студии, но 99%, что можно).

Так решается проблема отсутствия библиотек.

К сожалению, рантайм-библиотеки разных систем не особо дружат между собой, так что придётся перекомпилировать код под разные системы отдельно. Насчёт прикладных: google://кроссплатформенные библиотеки
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
08.09.2012, 00:51     Как сделать приложение универсальным #4
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
К сожалению, рантайм-библиотеки разных систем не особо дружат между собой, так что придётся перекомпилировать код под разные системы отдельно.
Это вы о чем?
outoftime
║XLR8║
508 / 430 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
08.09.2012, 00:52     Как сделать приложение универсальным #5
В VS C# можно либами расширять исполняемый файл (в линковке есть поле какое-то), это вопрос о либе.

По поводу оси: винда и никсы требуют отдельной компиляции, для мак оси еще инсталер делают отдельно, для винды можно компилить 1 раз если в настройках компиляции поставить поддержку и х86 и amd64.

Это так, для понимания, за деталями к оф доке.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
08.09.2012, 00:58     Как сделать приложение универсальным #6
Цитата Сообщение от defer Посмотреть сообщение
Это вы о чем?
Есть такая штука как рантайм. Это та библиотека, где лежат все определения всяких strlen, new, delete и т. п. Она различная у разных ОС со своими внутренними прибамбахами у каждой. Компилятор их удачно скрывает, но когда делается попытка перенести объектный файл на другую систему, эта абстракция начинает течь. Я уж молчу, что формат исполнимых файлов разный и линкуются к библиотекам они по-разному.
Devotion
23 / 21 / 2
Регистрация: 25.12.2011
Сообщений: 61
08.09.2012, 01:16  [ТС]     Как сделать приложение универсальным #7
Цитата Сообщение от outoftime Посмотреть сообщение
В VS C# можно либами расширять исполняемый файл (в линковке есть поле какое-то), это вопрос о либе.
Ну в С# это делать особого смысла нет, т.к. приложения на нем пишутся исключительно под Виндос и просто не работают без платформы .NET.

Я правильно понял, что если я скомпилю программу под Виндос со статическими библиотеками (т.е. нужные методы будут внутри экзешника), то он будет работать на любой Винде (7, ХР), но не будет работать на других ОС?
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
08.09.2012, 01:18     Как сделать приложение универсальным #8
Devotion, именно! под линукс надо или под линуксом компилить, или кросс компиляторы юзать
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
08.09.2012, 01:20     Как сделать приложение универсальным #9
Цитата Сообщение от Devotion Посмотреть сообщение
Я правильно понял, что если я скомпилю программу под Виндос со статическими библиотеками (т.е. нужные методы будут внутри экзешника), то он будет работать на любой Винде (7, ХР), но не будет работать на других ОС?
вот эта часть
если я скомпилю программу под Виндос со статическими библиотеками (т.е. нужные методы будут внутри экзешника), то он будет работать на любой Винде (7, ХР)
правильная

насчет других ОС, это отдельный разговор
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
08.09.2012, 01:23     Как сделать приложение универсальным #10
defer, если эта часть, то будет работать и на более ранних(вероятно). Главное чтоб все либы были статиком. И чтоб без всяких тих бгмерзких дотнетов
Devotion
23 / 21 / 2
Регистрация: 25.12.2011
Сообщений: 61
08.09.2012, 01:41  [ТС]     Как сделать приложение универсальным #11
Всем спасибо за помощь, решение во 2м посте
Цитата Сообщение от defer Посмотреть сообщение
свойствах проекта в разделе «C/C++ -> Code Generation» нужно свойство «Runtime Library» выставить в «Multi-threaded (/MT)»
Последний вопрос. Таким образом в программу вставляется полностью вся библиотека или только описание тех методов, которые используются в программе?
outoftime
║XLR8║
508 / 430 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
08.09.2012, 14:23     Как сделать приложение универсальным #12
Цитата Сообщение от Devotion Посмотреть сообщение
Ну в С# это делать особого смысла нет, т.к. приложения на нем пишутся исключительно под Виндос и просто не работают без платформы .NET.
А я то думал что закрою эту тему....

http://www.mono-project.com/Main_Page больше ничего не скажу
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2012, 17:25     Как сделать приложение универсальным
Еще ссылки по теме:

Вычисление функции - сделать многофайловое приложение - C++
function y(x,a:real):real; var t,w:real; begin t:=1-sqr(sin(x)); w:=a*a-x*x; y:=ln(sqrt((abs(t/w)))); end; var x,a:real; ...

Какое консольное mini-приложение можно сделать с использованием классов (для практики)? - C++
Подскажите пожалуйста какое то консольное mini-приложение можно сделать с использованием классов. А то книгу читаю но все бистро забивается...

Как перенести в приложение, типа как игру - C++
помогите перенести код, а лучше скажите какой программой перенести, или код тот же в общем хочу что бы не в консоли было #include...

Как скомпилировать приложение - C++
Подскажите, пжлст, какие настройки нужны для того чтоб программа скомпилировалась не в .exe или .dll, а в .bin (или что-то подобное) без...

Как создать приложение? - C++
Доброго времени суток, форумчане! Написала программу игры крестики-нолики, все работает. Но нужно сделать прям приложение, чтобы можно было...


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

Или воспользуйтесь поиском по форуму:
Devotion
23 / 21 / 2
Регистрация: 25.12.2011
Сообщений: 61
08.09.2012, 17:25  [ТС]     Как сделать приложение универсальным #13
Цитата Сообщение от outoftime Посмотреть сообщение
А я то думал что закрою эту тему....
http://www.mono-project.com/Main_Page больше ничего не скажу
Про Mono я знаю, просто речь шла о VS и С# в чистом виде, т.е. под .NET
Yandex
Объявления
08.09.2012, 17:25     Как сделать приложение универсальным
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru