Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 629 • Страница 13 из 32<  1 ... 10  11  12  13  14  15  16 ... 32  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 12.12.2003
Откуда: Уфа
Trener
понятно. Есть такой вопрос. Почему программа, да еще с использованием openGL весит всего 60 кБ. Хотя все другие файлы в папке release занимают порядка 15 мБ. И этого .exe файла достаточно, чтобы программа работала..



Партнер
 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
kexman писал(а):
Почему программа, да еще с использованием openGL весит всего 60 кБ. Хотя все другие файлы в папке release занимают порядка 15 мБ.

Все функции используемые в программе(винапи, опенЖЛ,...) лежат в dll-ках windows и из программы только вызываются, поэтому код и маленький(при большом желании можно ещё уменьшить). Если же проэкт mfc, то придётся таскать с собой пару dll-ек или собирать статически, что увеличит размер программы.


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
mein плюс CRT слинкована динамически, т.е. с собой нужно будет тягать redistributable package.

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 12.12.2003
Откуда: Уфа
mein
Программа-то у меня mfc application.


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
kexman
Залазишь в свойства проекта и сразу же в General->"Use of MFC" ставь в "Use MFC in a static Library" (для релизной и отладочной версии нужно ставить отдельно). После этого прога подрастёт на килобайт 200-300, но будет запускатся на голой 2000-ой винде точно(с большой вероятностью и на 98-ой тоже).
Daemon писал(а):
mein плюс CRT слинкована динамически, т.е. с собой нужно будет тягать redistributable package.

хм, это в каком варианте?


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
mein писал(а):
м, это в каком варианте?
В 2005 студии CRT всегда линкуется динамически, отсюда размер ехе 44 кб даже с дебаг символами.

_________________
Ку ку


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
Daemon понятно, 2005-ую студию почти не пользовал - надо будет глянуть


 

Member
Статус: Не в сети
Регистрация: 28.03.2006
Daemon писал(а):
В 2005 студии CRT всегда линкуется динамически, отсюда размер ехе 44 кб даже с дебаг символами.

а если так попробовать С++ - > Code Generation - > Runtime Library ?

_________________
Первый огонь был получен людьми из-за перегрева.
Пессимист отличается от оптимиста датой наступления конца света.


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Aside Minimize CRT use in ATL поставить в Yes. Это решает проблему.

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 18.08.2005
Откуда: Новороссийск
Как бороться с ошибками такого рода:
Код:
blackbox.obj : error LNK2019: unresolved external symbol _DirectDrawCreateEx@16 referenced in function "int __cdecl DD_Init(int,int,int)" (?DD_Init@@YAHHHH@Z)
Release/FREAKOUT.exe : fatal error LNK1120: 1 unresolved externals


Проэкт обычный, чистый Win32, исходный код из книги (с диска) расчитан на компилятор 6-й версии, я юзаю 7.1, в чём может крыться проблема?
blackbox.cpp это что-то типо урезанная версия Direct Draw, написанная автором книги, в ней минимальный набор функций для вывода на экран данных (прямоугольников разного цвета и т.п.).

Можно ли в проекте Win32 вывести на главную форму группу объектов RadioBatton, усли можно, то если не тяжело подскажите как, я не говорю напишите всё за меня, просто подскажите. Просто нам в универе задают задачки разные, но мы всё делаем в Builder`е и я там все проги оформил в один проект, на главной форме выбор проги, а далее либо ENTER либо OK и открывается не модальное окошко с программкой, но я понимаю, что в билдере в дальнейшем наврядли придётся программировать, вот я и решил всё перенести в Win32 проект, так сказать для тренировки своих возможностей, тренировке по работе со средой разработки.

И ещё вопрос, как можно переносить проекты из более новой студии в более старую, например из 8.0 в 7.1, из 7.1 в 6.0? А то ведь это иногда очень надо, например если дома стоит 7.1, а в универе 6.0!


 

Member
Статус: Не в сети
Регистрация: 24.12.2005
Либы (ddraw.lib вроде раньше была) подключай.


 

Member
Статус: Не в сети
Регистрация: 18.08.2005
Откуда: Новороссийск
Билли Бонс точно, надо было в свойствах проекта подключить, в свойствах линковщика! Кстати с RadioBatton на главной форме разобрался, так что вопрос закрыт, у меня всё получилось ;) ! А вот вопрос о переносе проектов по-прежнему открыт! Вот например в DX SDK все примеры сделаны для 2003 - ей и 2005 - ой студии, неужеле они парятся с двумя студиями, т.е. сначало всё делают в 2003-ей а затем переносят проект на 2005-ую, думаю наврядли, ведь на сколько я знаю нельзя держать на одной винде две разные версии студии, а парится с двумя виндами думаю им нет смысла! У кого какие мысли на этот счёт?


 

Member
Статус: Не в сети
Регистрация: 30.01.2006
Откуда: Минск
-=alex-forewer=-, почему нельзя- у меня стоят одновременно 6 и 2005. Только что для интереса даже запустил одновременно и компилировал проекты-работает нормально.


 

Member
Статус: Не в сети
Регистрация: 18.08.2005
Откуда: Новороссийск
Проект обычный, чистый Win32, я хочу просто сделать нормальный цвет окна, так сказать стандартный, но компилятор ругается на то, что я пометил, хотя я всё по инструкции сделал (MSDN 2004 July).
Код:
int WINAPI WinMain( ... )
{
    ...

    HWND hwnd;
    HDC  hdc;

    hdc = GetDC(hwnd);

    GetDCBrushColor(hdc, RGB(111,111,111)); тут проблема с GetDCBrushColor( ... )

    ...

    winclass.hbrBackground = (HBRUSH)GetStockObject(DC_BRUSH); // тут проблема с DC_BRUSH

    ...

}

Alex12 Надо будет проверить.


 

Member
Статус: Не в сети
Регистрация: 12.12.2003
Откуда: Уфа
Помогите с консольным приложением OpenGl, почему-то не работает - консоль включается, а окно опенгл не открывается:
Код:
#include <Windows.h>
#include <math.h>

#include <gl\gl.h>
#include <gl\glu.h>
#include <gl\glaux.h>


GLfloat ctrlpoints[4][3]={   {-4.0,-4.0,0.0},
                             {-2.0,4.0,0.0},
                             {2.0,-4.0,0.0},
                             {4.0,4.0,0.0}
                          };

void init()
{
      glClearColor(0.0,0.0,0.0,0.0);
      glShadeModel(GL_FLAT);
      glMap1f(GL_MAP1_VERTEX_3,0.0,1.0,3,4,&ctrlpoints[0][0]);
      glEnable(GL_MAP1_VERTEX_3);
}

void _stdcall display()
{
      int i;

      glClear(GL_COLOR_BUFFER_BIT);
      glColor3f(0.0,1.0,0.0);
      glBegin(GL_LINE_STRIP);
            for(i=0;i<=30;i++)
                  glEvalCoord1f((GLfloat)i/30.0);
      glEnd();

      //Контрольные точки
      glPointSize(5.0);
      glColor3f(1.0,1.0,0.0);
      glBegin(GL_POINTS);
            for(i=0;i<4;i++)
                  glVertex3fv(&ctrlpoints[i][0]);
      glEnd();
      glFlush();
}

void _stdcall reshape(int w, int h)
{
      glViewport(0,0,(GLsizei) w, (GLsizei) h);
      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      if (w<=h)
            glOrtho(-5.0,5.0,-5.0*(GLfloat)h/(GLfloat)w,
                     5.0*(GLfloat)h/(GLfloat)w,-5.0,5.0);
      else
            glOrtho(-5.0*(GLfloat)w/(GLfloat)h,
                     5.0*(GLfloat)w/(GLfloat)h,-5.0,5.0,-5.0,5.0);
      glMatrixMode(GL_MODELVIEW);
      glLoadIdentity();
}

void main()
{
      auxInitDisplayMode (AUX_SINGLE | AUX_RGB);
     auxInitPosition(100,100,600,600);
      auxInitWindow("Bezier Curve with Four Control Points");

     init();
    
     auxIdleFunc(display);
     auxMainLoop(display);
      auxReshapeFunc(reshape);
}

Библиотеки OpenGL32.lib GLU32.lib glaux.lib подключал. В чем может быть дело? А то обычно пользуюсь MFC MDI + OpenGL, все окей.
Добавлено спустя 1 минуту, 53 секунды
Проект - managed c++ empty project


 

Member
Статус: Не в сети
Регистрация: 12.12.2003
Откуда: Уфа
Как выводить в строку состояния приложения MFC SDI данные? Дело в том, что объект строки состояния CStatusBar m_wndStatusBar находится в классе CMainFrame, а код программы в функциях класса CAppView. Из этих функций надо выводить в строку состояния? Как это сделать?


 

А какая разница между WIN32API, MFC, OpenGl и DX SDK и что более перспективнее использовать?


 

Member
Статус: Не в сети
Регистрация: 12.12.2003
Откуда: Уфа
Все, нашел, получить доступ к объекту класса CMainFrame можно так:
CMainFrame *pMainFrame = (CMainFrame*)(::AfxGetMainWnd());
Все-таки VC++ очень геморная вещь, ничерта неудобная, чтобы реализовать простой вывод в строку состояния я потратил уйму времени прежде чем нашел как это делается. И так с каждой мелочью....


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
kexman VC++ не причем, это MFC, я же предупреждал тебя, что лучше на эту чушь время не тратить, а взять хотя бы QT или GTK.

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 12.12.2003
Откуда: Уфа
Daemon
Щас немного читал на другом форуме, про .NET типа технология будущего, а как там с графическим интерфейсом программы? Удобно или нет? Может стоит на него переходить, ведь это технология будущего, по мнению M$, скоро Windows Vista выходит, там это вообще втроено.
А что такое QT и GTK? И где можно про это прочитать?


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 629 • Страница 13 из 32<  1 ... 10  11  12  13  14  15  16 ... 32  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan