На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
Страницы: (20) « Первая ... 6 7 [8] 9 10 ...  19 20 все  ( Перейти к последнему сообщению )  
> Проблемы перехода на Visual Studio 2005/2008 с более ранних версий , FAQ
    Здравствуйте. Я новичек и в VS, и в C++.
    Появилась необходимость написать консольное приложение на VS2005 по платформу Win32 (без .Net).
    Создаю новый проект: Visual C++ ->Win32 Console Application -> Empty project. Создаю новый модуль и впечатываю, например, это:
    ExpandedWrap disabled
      #include <iostream>
      int main()
      {
      std::cout << "Hello, World!\n";
      }

    VS создает ехе, но он не запускается без .Net. Пишет:
    ExpandedWrap disabled
      Приложение не было запущено, поскольку оно некорректно настроено. Повторная установка приложения может решить данную проблему.

    Что делать?
    Читал где-то, что можно сделать так: зайти в свойства проекта, general -> Use of MFC изменить на Static. Теперь программа запускается без .Net, но ехе файл весит 600кб. Т.е. это не совсем хорошее решение. Таскать за программой "Hello World" какие-то ненужные библиотеки тоже не лучшее решение.
      Недавно перешел под 2005 с 6-ки.
      Вот такой странное поведение заметил.
      Если открыть проект через файл *.vcproj - то после rebuild вылезают ошибки - cannot locate mfc80d.dll .. etc. Если их скопировать из папки %VS% - точный путь лень писать, чего-то там redist, если их скопировать тот там выдает ASSERT - по отладчику выходит на строку CHECK_MANIFEST_RT - или что-то похожое. Манифесты я тоже скопировал из той папки откуда и dll.

      А если открывать файл solution и делать rebuild - то все хорошо. Никаких dll копировать не нужно, сам все видит. Из-за чего так происходит мне соверешенно непонятно. Видимо проблема с переменными окружения какие-то, но тогда остается вопрос, почему при копировании нужных dll и манифестов приложение всеравно сыпется на том ASSERT, который я выше описал.

      Хочу обратить внимание на
      Цитата
      Если открыть проект через файл *.vcproj - то после rebuild

      Если до этого делать rebuild в через открытие solution, то при обычном build в vcproj все будет нормально, до тех пор пока именно через открытый vcproj не сделаешь rebuild.

      система : xp sp 2, vs 2005 sp 1.

      Почему так происходит ?
      Сообщение отредактировано: Devilguard -
        Так и не понял из-за чего эта хрень, но последствия лечится отключением embed manifest или generate manifest.
        Сообщение отредактировано: Devilguard -
          Цитата Avreliy @
          хочет, судя по help'у,

          Да нет, батенька, как раз 2 параметра он хочет. И проблема не связана с переходом на 2005, т.к. вы начинаете с нуля, а не с более ранней версии.
            Пжалста
            Книжки вам бы почитать.
              Проблема при регистрации ActiveX компонентов.
              Project : error PRJ0050: Failed to register output. Please ensure you have the appropriate permissions to modify the registry.
              Сижу под админскими правами... тот же самый компонент в 2003 компилируется и регистрируется на "УРА"
              Если делать руками, через regsrv32 получаю ошибку
              "Ошибка при вызове LoadLibrary(mydllname.dll) Не найден указанный модуль"
              Что делать?
                Все разобрался. Всем спасибо за помощь...
                  Есть такая редкая, но неприятная бага, когда cpp-шные проекты 2005 студия компилит раз через десять, ругаясь "Error result 1 returned from 'C:\WINDOWS\system32\cmd.exe'". Долго искал как это вылечить, нашёл кое-как: В свойствах проекта Configuration Properties -> Manifest Tool -> Input and Output -> Embed Manifest ставим в No.
                  Может кому пригодится.
                    Всем, у кого "Приложение не было запущено, поскольку оно некорректно настроено." читать здесь.

                    Цитата
                    Visual C++ 2005 supports a new deployment model for Windows client applications based on the idea of isolated applications and side-by-side assemblies. In Visual C++ 2005, the ATL, MFC, Standard C++, and CRT libraries have been rebuilt as shared side-by-side assemblies that are installed into the native assembly cache (WinSxS folder). By default, Visual C++ 2005 builds all native C/C++ applications as isolated applications that use manifests to describe their dependencies on Visual C++ libraries.

                    Если коротко, дело в том, что теперь разделяемые библиотеки специальным образом копируются в папку %WINDIR%\WinSxS (а именно, распихиваются по вложенным папкам со специальными именами, зависимыми от версий библиотек). И, разумеется, ищутся там же. Это сделано для решения проблемы DLL Hell, когда библиотеки разных версий конфликтуют между собой.

                    Чтобы быстро установить необходимые библиотеки на компьютере пользователя, можно использовать пакет
                    %PROGRAMFILES%\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86\vcredist_x86.exe.

                    Другой вариант - включить необходимые библиотеки в свой инсталлятор и копировать их в WinSxS с соблюдением необходимых правил, описанных в MSDN. Но проще тупо воссоздать у пользователя структуру папок и файлов в WinSxS, подсмотрев её на своем компьютере.

                    P.S. Кстати, видимо WinSxS - библиотеки ставятся вместе с .NET Framework (также как, например, MS Office в свое время приносил с собой mfc42.dll), что при совпадении версий библиотек решает проблему запуска. Но это совершенно не означает, что нативные Win32-приложения теперь зависят от .NET Framework. Просто так вышло. Случайно.
                    Сообщение отредактировано: Red XIII -
                      Как заставить проект класть ilk-файлы (создаются при DEBUG сборке) в нужный мне каталог, а не автоматически в выходной каталог исполняемого файла? Мне удалось разделить все объектные файлы и исполняемый файл по разным папкам, а вот ilk никак не могу.
                        Цитата dim_on @
                        Как заставить проект класть ilk-файлы (создаются при DEBUG сборке) в нужный мне каталог

                        Так пробовал?

                        Свойства проекта > Configuration Properties > Build Events > Post-Build Event > Command Line > "move /Y *.ilk c:\dir"
                        Сообщение отредактировано: Red XIII -
                          Цитата Red XIII @
                          тата (dim_on @ Сегодня, 10:27)
                          Как заставить проект класть ilk-файлы (создаются при DEBUG сборке) в нужный мне каталог

                          Так пробовал?

                          Свойства проекта > Configuration Properties > Build Events > Post-Build Event > Command Line > "move /Y *.ilk c:\dir"

                          Не пробовал, спасибо за подсказку.

                          А без командной строки никак нельзя?
                            Цитата dim_on @
                            А без командной строки никак нельзя?

                            "Вам шашечки или ехать?" :)
                              постоянно натыкаюсь на проблему с CString...
                              не вызывается копирование объекта, а просто копирует указатель на буфер и реф добавляет..
                              а иногда копирует полностью буфер.. :blink: я пока не нашел на каком основании производится решение копировать или нет..

                              типа

                              ExpandedWrap disabled
                                CString str1, str2;
                                 
                                str2 = str1;
                                 
                                str2 = _T("text");


                              в итоге в str1 тоже будет text :wacko:
                                Цитата rs4i @
                                Дамы и господа, кто-нибудь знает как
                                собрать в VC++2005 и запустить без dotNet'a
                                следующую консольную программу:

                                #include <iostream>
                                int main()
                                {
                                std::cout << "Hello, World!\n";
                                }

                                Как и прежде в 2002 или 2003 студии достаточно лишь выбрать при создании нового проекта (или решения) Win32 Console Application. DOS-овсвкое уже давно не поддерживается.

                                Добавлено
                                Смотрел недавно в книжном магазине книгу "Visual C++ 2005 (базовый курс). Айвор Хортон". В Болеро.ру мне удалось её заказать почти на 500 р. дешевле. Книга понравилась тем, что рассчитана на чайника в пограммировании и при этом в ней более 1000 страниц. Перевод на русский показался приличным.

                                Добавлено
                                Это не относится к цитате. Просто хотел поделиться радостью.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (20) « Первая ... 6 7 [8] 9 10 ...  19 20 все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0498 ]   [ 16 queries used ]   [ Generated: 27.04.24, 13:17 GMT ]