C++ без Framework

Тема в разделе "Общие вопросы по С и С++", создана пользователем DSDante, 5 фев 2009.

  1. DSDante

    DSDante Гость

    Репутация:
    0
    Простите, если вопрос уже был (вопрос популярный), но ни поиск по форуму, ни вообще в инете мне не помог.
    Итак, я написал программу, выдающую "Hello, world!", и хочу откомпилить ее в Visual Studio 2008 так, чтобы она запустилась на компах, где VS отсутствует (как и вообще Framework любой версии).
    Большинство ответов на этот вопрос сводится к "а зачем тебе это вообще надо?" и "в висте уже есть фреймворк, лучше сразу привыкай". Но, во-первых, фреймворк есть на 2% компьютеров, которые мне встречались, во-вторых, мне не нравится виста, и в-третьих, моя гордость программиста не успокоится, пока я не решу эту простую, казалось бы, проблему. :)
    Еще часто встречаются ответы, что, мол, запускать программу без фреймворка - то же самое, что запускать без операционки. Но ведь тот же самый код, скомпилированный в старом VC прекрасно работал!
     
  2. @LE}{@NDER

    @LE}{@NDER Гость

    Репутация:
    0
    Гы.
    1. Создавай в студии С++ проект Win32 Console Application
    2. Вытирай все, кроме #include "stdafx.h"
    3. Вставляй код:

    Код (Text):
    #include <iostream>
    using namespace std;

    void main()
    {
    cout<<"Hello world!\n";
    getchar();
    }
    или
    Код (Text):
    #include <windows.h>

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
    MessageBox(NULL, _T("Hello, world!"), _T("Hello world Application"), MB_OK);return 0;
    }
    3. Компилируй и запускай.

    и никакого фреймворка не надо ]:->
    А вообще это бред! Windows XP SP3 ставится с .NET Framework 2 - это как минимум, по-моему даже с 3м. Так что это сказки, что только на 5% компов стоит фреймворк. Ты в каком веке живёшь? А если считаешь, что он тебе не нужен, смысл тогда постить в тему .NET? Пиши на чистых С плюсах.
     
  3. DSDante

    DSDante Гость

    Репутация:
    0
    Я создавал Empty Project, и вручную писал единственный *.cpp типа
    Прога весила килобайт эдак семь, но все равно содержала в себе манифест, и требовала фреймворк.

    Будете смеяться, но я не знал, что существует WinXP SP3. :) И все равно хочется совместимости хотя бы со старыми сервис паками.
     
  4. @LE}{@NDER

    @LE}{@NDER Гость

    Репутация:
    0
    Меню Project - <Project Name> Properties - Configuration Properties - Manifest Tool - опцию Embed manifest ставь NO
    если не поможет еще меняй Меню Project - <Project Name> Properties - Configuration Properties - Linker - Manifest file - Generate manifest=No
    этого по идее должно хватить
     
  5. DSDante

    DSDante Гость

    Репутация:
    0
    Уже пробовал. Создается файл *.exe.manifest, без которого прога выдает ошибку, мол, MSVCR90D.dll не найден.
     
  6. European

    Репутация:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    2.566
    Симпатии:
    2
    DSDante, по моему Вы путаете основополагающие вещи.
    Вы пишете на управляемом С++? Если да, то без установки NET Framework не обойтись. Если нет, то все должно работать после корректной настройки приложения.
     
  7. DSDante

    DSDante Гость

    Репутация:
    0
    Все то же самое относится к прогам, которые компилировались в Borland C++ (в DOS).

    Кстати, когда я запускаю прогу с манифестом на компе без фреймворка, выдается ошибка, что программа некорректно настроена. Я три раза облазил все Project Properties, но решения проблемы не нашел.
     
  8. etc

    etc Гость

    Репутация:
    0
    Как определяли и эти 2% из скольки тестируемых?
    а чего так, пока самая лучшая десктоповая ось, по крайней мере у микрософта.
    плохо вникли в Сообщение #6, я так думаю.
     
  9. European

    Репутация:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    2.566
    Симпатии:
    2
    DSDante, телепаты все в отпуске. Можете прямо ответить на мой вопрос?
     
  10. DSDante

    DSDante Гость

    Репутация:
    0
    Давайте не будем спорить о вкусах, несовместимость с SP2 - уже достаточная причина разобраться в этом.

    Объясните, пожалуйста. Как я понял, Managed C++ - это расширение синтаксиса C++, которое я никогда не использовал, и которого не было во времена Borland C++. Так что оно ни при чем.
     
  11. European

    Репутация:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    2.566
    Симпатии:
    2
    Так чего Вы тему в Net засунули, если используете чистый C++?
     
  12. DSDante

    DSDante Гость

    Репутация:
    0
    Просто ошибся. Перенесите ее в С++ > VC, если хотите.
     
  13. European

    Репутация:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    2.566
    Симпатии:
    2
    Что значит "хотите-нехотите"? Вы изначально вводите в заблуждение, а потом просите помощи в решении несуществующей проблемы
     
  14. DSDante

    DSDante Гость

    Репутация:
    0
    Извините, я не специально. А проблема, имхо, все же существующая.
     
  15. etc

    etc Гость

    Репутация:
    0
    А зачем вы начали?
    А это то тут причем? на 2000 винде все работает
    Ну да ладно, раз перенесли, значит ушел я.
     
  16. European

    Репутация:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    2.566
    Симпатии:
    2
  17. @LE}{@NDER

    @LE}{@NDER Гость

    Репутация:
    0
    DSDante, не нужно забывать, что любое приложение, даже самое простое, юзает виндозные библиотеки. Если это не нравится, есть выход - написать свою ось :(

    Еще момент - если приложение консольное, то
    Меню Project -> <Project Name> Properties -> Configuration Properties -> С/С++ -> Runtime Library -> поменять надо Multi-threaded Debug DLL (/MDd) на Multi-threaded Debug (/MTd)

    после этого у меня все консольные приложения работают на других компах, где студии и в помине не было.
     
  18. DSDante

    DSDante Гость

    Репутация:
    0
    Похоже, я нашел ответ на свой вопрос на msdn.microsoft.com/ru-ru/library/ms235342.aspx.
    Получается, Микрософт забил на совместимость. :(

    ...

    Ура! Заработало!!! Я 2 ГОДА парился над этой ошибкой, и подумать не мог, что дело в этом. Программа потяжелела на 34 кБ, но это не существенно. И дело не в том, консольная программа или нет.
    Огромное спасибо
     
  19. DSDante

    DSDante Гость

    Репутация:
    0
    Немного поизучал данный вопрос, и вот что выяснил: добавление статичной библиотеки Multithreaded добавляет 43 кБ к файлу. Можно при этом не генерировать манифест (Project Properties - Linker - Manifest file - Generate manifest = No), но пропадает XP Style. В Warcraft 3, начиная с патча 1.21 в папке с игрой появились файлы
    Microsoft.VC80.CRT.manifest,
    msvcm80.dll,
    msvcp80.dll,
    msvcr80.dll,
    которые обеспечивают совместимость со старыми сервис паками. Узнать бы, как это делается.
     
  20. alexsid

    alexsid Гость

    Репутация:
    0
    Все просто
    Пишешь прогу
    Смотришь депенденсы (зависимые ДЛЛ)
    Копируешь в папку с прогой все депенденсы
    Потом пишешь манифест на все депенденсы

    и вуаля :(

    ЗЫ в Варкрафте так и сделали, кстати...
     
Загрузка...
Похожие Темы - C++ без Framework
  1. vladius
    Ответов:
    0
    Просмотров:
    1.489
  2. Abhishek lyall
    Ответов:
    0
    Просмотров:
    416
  3. a_khachaturov
    Ответов:
    0
    Просмотров:
    74
  4. cppjob
    Ответов:
    0
    Просмотров:
    104
  5. cppjob
    Ответов:
    0
    Просмотров:
    100

Поделиться этой страницей