crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Чем заменить WinApi?
ido
  опции профиля:
сообщение 9.4.2010, 11:55
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 26
Регистрация: 7.4.2010
Пользователь №: 1602

Спасибо сказали: 0 раз(а)




Репутация:   0  


Есть программка, которая использует для своей загрузки около 30-и WinApi-функций из Kernel32.dll, User32.dll и Ole32.dll. При дальнейшей работе дополнительных функций она не использует. Нужно заменить в исходниках вызов этих функций на аналогичные из любой кроссплатформенной библиотеки, внося минимум изменений в код. Какую библиотеку проще всего использовать для этого и есть ли для нее что-то типа справочника по аналогам функций?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Iron Bug
  опции профиля:
сообщение 11.4.2010, 19:43
Сообщение #2


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


по-моему, ты себе слабо представляешь, что такое wxWidgets, виджеты - это виджеты. у этой библиотеки нет задачи переписать все API какой-то одной системы. она предоставляет общий интерфейс для работы с графикой на кроссплатформенной основе и некоторые сопутствующие библиотеки (wxBase).
вообще говоря, не очень понятно, что и с чем ты собираешься "сравнивать".
к тому же, портирование, которое ты собрался производить - это, скорее всего, не только замена одних вызовов на другие. у систем есть понятие архитектуры: потоков, синхронизации, событий и т.п. и это всё реализовано в разных системах по-разному. тут однозначного алгоритма для портирования нет и быть не может. кроссплатформенные библиотеки предоставляют обобщённые функции, которые поддерживаются всеми системами. и реализация, естественно, зависит от того, под какой системой планируется работа. она может быть простой, а может быть завязана на целый каскад действий, в зависимости от системы и требуемого эффекта.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ido
  опции профиля:
сообщение 11.4.2010, 23:35
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 26
Регистрация: 7.4.2010
Пользователь №: 1602

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Iron Bug @ 11.4.2010, 19:43) *
по-моему, ты себе слабо представляешь, что такое wxWidgets...
Пока только начал искать и вопрос такой: качать иль не качать. Если качать, тогда что именно(не всё же подряд). Вот нашел по отдельным файлам
Цитата
============================================================================
458: // implementation of wxTempFile
459: // ============================================================================
460:
461: // ----------------------------------------------------------------------------
462: // construction
463: // ----------------------------------------------------------------------------
464:
465: wxTempFile::wxTempFile(const wxString& strName)
466: {
467: Open(strName);
468: }
469:
470: bool wxTempFile::Open(const wxString& strName)
471: {
472: // we must have an absolute filename because otherwise CreateTempFileName()
473: // would create the temp file in $TMP (i.e. the system standard location
474: // for the temp files) which might be on another volume/drive/mount and
475: // wxRename()ing it later to m_strName from Commit() would then fail
476: //
477: // with the absolute filename, the temp file is created in the same
478: // directory as this one which ensures that wxRename() may work later
479: wxFileName fn(strName);
480: if ( !fn.IsAbsolute() )
481: {
482: fn.Normalize(wxPATH_NORM_ABSOLUTE);
483: }
484:
485: m_strName = fn.GetFullPath();
486:
487: m_strTemp = wxFileName::CreateTempFileName(m_strName, &m_file);
488:
489: if ( m_strTemp.empty() )
490: {
491: // CreateTempFileName() failed
492: return false;
493: }
494:
495: #ifdef __UNIX__
496: // the temp file should have the same permissions as the original one
497: mode_t mode;
498:
499: wxStructStat st;
500: if ( stat( (const char*) m_strName.fn_str(), &st) == 0 )
501: {
502: mode = st.st_mode;
503: }
504: else
505: {
506: // file probably didn't exist, just give it the default mode _using_
507: // user's umask (new files creation should respect umask)
508: mode_t mask = umask(0777);
509: mode = 0666 & ~mask;
510: umask(mask);
511: }
512:
513: if ( chmod( (const char*) m_strTemp.fn_str(), mode) == -1 )
514: {
515: #ifndef __OS2__
516: wxLogSysError(_("Failed to set temporary file permissions"));
517: #endif
518: }
519: #endif // Unix
520:
521: return true;
522: }
Здесь явно видно WinApi-функцию -- CreateTempFileName(). Так искать удобнее, чем по документации Qt. Может есть более простой вариант. С программой, где надо заменять, всё достаточно просто, если не придется использовать case, разделяя код для Windows и Linux.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- ido   Чем заменить WinApi?   9.4.2010, 11:55
- - maint   Цитата(ido @ 9.4.2010, 11:55) Есть програ...   9.4.2010, 13:04
- - ViGOur   ido, какие функции хоть используются? Как вариант...   9.4.2010, 13:14
- - molchanoviv   Если выбирать по похожести, то это WxWidgets. А та...   9.4.2010, 13:23
- - ido   Цитата("ViGOur")какие функции хоть испол...   9.4.2010, 14:27
- - molchanoviv   Большинство из перечисленных функций можно заменит...   9.4.2010, 14:34
- - Iron Bug   ну, как вариант - заменить на бустовские библиотек...   9.4.2010, 14:49
- - Litkevich Yuriy   Цитата(molchanoviv @ 9.4.2010, 17:23) Есл...   9.4.2010, 15:37
- - ido   Цитата("molchanoviv")Большинство из пере...   9.4.2010, 16:33
- - molchanoviv   Цитата(ido @ 9.4.2010, 17:33) У меня есть...   9.4.2010, 16:42
- - Litkevich Yuriy   Цитата(ido @ 9.4.2010, 20:33) У меня есть...   9.4.2010, 17:50
- - ido   Нашел у себя в глубоких архивах исходники, примеры...   10.4.2010, 14:29
- - Iron Bug   по-моему, ты себе слабо представляешь, что такое w...   11.4.2010, 19:43
|- - ido   Цитата(Iron Bug @ 11.4.2010, 19:43) по-мо...   11.4.2010, 23:35
- - Iron Bug   дык, исходники-то всегда доступны. а код в исходни...   12.4.2010, 8:37
- - Litkevich Yuriy   добавлю: Простое подключение нескольких исходников...   12.4.2010, 8:50
- - ido   Вся сложность задачи понятна. Почти всё, что есть ...   12.4.2010, 14:25
- - Litkevich Yuriy   Цитата(ido @ 12.4.2010, 18:25) Просьба вы...   12.4.2010, 16:01
- - Iron Bug   видишь ли, кроссплатформенные библиотеки не были з...   12.4.2010, 21:49
- - ido   Цитата(Iron Bug)ты уверен, что структура твоей про...   13.4.2010, 6:30


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.2.2025, 11:13