Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Написание кросс-платформенных приложений


Автор: IL3 5.9.2008, 20:38
Надо написать программу на WinApi(для винды) и на GTK(для линукса). Планирую сделать разделение с помощью макро команд.
Вроде:
Код

#ifdef WIN32
  int WinMain( ... )
  {
  }
#else
  int main( ... )
  {
  }
#endif

Только я никак не могу найти этих дефайнов. А может быть есть способ лучше?

Автор: Acer 5.9.2008, 21:32
http://trolltech.com. Этим все сказано smile

Автор: IL3 5.9.2008, 21:57
Ну, походу дела он платный=) Я так понимаю, что это библиотека классов для рисования гуи(в том числе)
Кроме всего прочего я пишу в целях обучения и хочу сначала понять как это работает, а уже потом использовать сторонние библиотеки.
В общем не подходит он мнеsmile 
Есть другие варианты?

Автор: Acer 5.9.2008, 22:01
У Qt есть 2 версии. Коммерческая и Open Source. Вторая бесплатная. Скачать можно http://trolltech.com/downloads/opensource
Это кроссплатформенная библиотека для всего. Не только гуй она может нарисовать. Полностью обьектная модель. Все просто, как в java.

Автор: IL3 5.9.2008, 22:04
Да, да, это понятно. Но я не хочу пользоваться такими библиотеками во-первых потому что интерфейс для линукса уже написан, а во вторых потому что интересно самому разобраться в этой теме.

Автор: Acer 5.9.2008, 22:07
хм. А GTK - это по твоему не сторонняя библиотека? Ты сам себе противоречишь

Автор: IL3 5.9.2008, 22:09
А хз. Часть для линукса писал не я, а сам я ничего про это не знаю, просто увидел название в коде=)

Автор: Acer 5.9.2008, 22:20
Qt как и Gtk+ есть библиотека расширяющая C++. Гуй ты можешь под виндой рисовать с помощью WinApi. Там не надо ничего лишнего использовать... А под никс не знаю... не пробовал.

Автор: IL3 5.9.2008, 22:54
А, понятно. Так как узнать под какой операционной системой компилируется программа?

Автор: Rpahut 5.9.2008, 23:03
По поводу гуя http://forum.vingrad.ru/forum/topic-226904/kw-gui-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81-http-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80.html# посмотри (да, да, это самореклама =) Вобще без сторонних библиотек мало что можно написать; фишка не в том, чтобы совсем без них обойтись, а чтоб при переносе на другую ось нужно было переписать минимум кода . А сразу на обеих осях мона только консольное приложение запустить наверное.

Автор: Acer 5.9.2008, 23:58
Цитата(IL3 @ 5.9.2008,  22:54)
А, понятно. Так как узнать под какой операционной системой компилируется программа?

Вот так можно, я думаю
Код

#if defined(__APPLE__) && (defined(__GNUC__) || defined(__xlC__) || defined(__xlc__))
/* Code for Mac OS X */
#ifdef __LP64__
/* Code for Mac OS X 64 bit */
#else
/* Code for Mac OS X 32 bit */
#endif
#elif defined(MSDOS) || defined(_MSDOS)
/* Code for MS DOS */
#elif defined(__OS2__)
#if defined(__EMX__)
/* Code for XFree86 on OS/2 (not PM) */
#else
/* Code for OS/2 */
#endif
#elif !defined(SAG_COM) && (defined(WIN64) || defined(_WIN64) || defined(__WIN64__))
/* Code for Win32 / Win64 */
#elif !defined(SAG_COM) && (defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__))
#if defined(WINCE) || defined(_WIN32_WCE)
    /* Code for Windows CE 5.0 */
#else
/* Code for Win32 */
#endif
#elif defined(__MWERKS__) && defined(__INTEL__)
/* Code for Win32 */
#elif defined(__sun) || defined(sun)
/* Code for Sun Solaris */
#elif defined(hpux) || defined(__hpux)
/* Code for HP-UX */
#elif defined(__ultrix) || defined(ultrix)
/* Code for DEC Ultrix */
#elif defined(sinix)
/* Code for Reliant UNIX */
#elif defined(__linux__) || defined(__linux)
/* Code for Linux */
#elif defined(__FreeBSD__) || defined(__DragonFly__)
/* Code for FreeBSD  */
#elif defined(__NetBSD__)
/* Code for NetBSD & Any BSD 4.4 system */
#elif defined(__OpenBSD__)
/* Code for OpenBSD */
#elif defined(__bsdi__)
/* Code for BSD/OS */
#elif defined(__sgi)
/* Code for SGI Irix */
#elif defined(__osf__)
/* Code for HP Tru64 UNIX */
#elif defined(_AIX)
/* Code for AIX */
#elif defined(__Lynx__)
/* Code for LynxOS */
#elif defined(__GNU__)
/* Code for GNU Hurd */
#elif defined(__DGUX__)
/* Code for DG/UX */
#elif defined(__QNXNTO__)
/* Code for QNX RTP 6.1 */
#elif defined(__QNX__)
/* Code for QNX */
#elif defined(_SEQUENT_)
/* Code for DYNIX/ptx */
#elif defined(_SCO_DS)
/* Code for SCO OpenServer 5 + GCC */
#elif defined(__USLC__)
/* all SCO platforms + UDK or OUDK */
#elif defined(__svr4__) && defined(i386)
/* Open UNIX 8 + GCC */
#endif

Автор: IL3 6.9.2008, 17:39
О, все понятно. Спасибо большое smile 

Автор: Acer 6.9.2008, 17:41
Можешь мне поставить плюсег smile 

Автор: Rickert 7.9.2008, 06:16
Acer, Да ты совсем плохой парень, судя по репутации smile
+ от IL3

Автор: Acer 7.9.2008, 10:45
Rickert, ну... я стараюсь исправляться smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)