Здравствуйте, гость ( Вход | Регистрация )
|
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) Link по-моему, ты себе слабо представляешь, что такое wxWidgets... Пока только начал искать и вопрос такой: качать иль не качать. Если качать, тогда что именно(не всё же подряд). Вот нашел по отдельным файламЦитата ============================================================================ Здесь явно видно WinApi-функцию -- CreateTempFileName(). Так искать удобнее, чем по документации Qt. Может есть более простой вариант. С программой, где надо заменять, всё достаточно просто, если не придется использовать case, разделяя код для Windows и Linux. 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: } |
|
|
|
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 дык, исходники-то всегда доступны. а код в исходни... 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![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 1.1.2026, 0:53 |