crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Чем заменить WinApi?
ido
  опции профиля:
сообщение 9.4.2010, 11:55
Сообщение #1


Студент
*

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

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




Репутация:   0  


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


Участник
**

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

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




Репутация:   2  


Цитата(ido @ 9.4.2010, 11:55) *
Есть программка, которая использует для своей загрузки около 30-и WinApi-функций из Kernel32.dll, User32.dll и Ole32.dll. При дальнейшей работе дополнительных функций она не использует. Нужно заменить в исходниках вызов этих функций на аналогичные из любой кроссплатформенной библиотеки, внося минимум изменений в код. Какую библиотеку проще всего использовать для этого и есть ли для нее что-то типа справочника по аналогам функций?

обычно конкретно спрашивают. А так, про телепатов в отпуске можно только ответ получить
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 9.4.2010, 13:14
Сообщение #3


Мастер
******

Группа: Модератор
Сообщений: 3293
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


ido, какие функции хоть используются?

Как вариант в принципе можно их обернуть чем-то вроде
#ifdef _LINUX_ 
   // Линуксовое API
#endif

#ifdef _WINDOWS_
   // Виндовое API
#endif
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 9.4.2010, 13:23
Сообщение #4


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

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




Репутация:   5  


Если выбирать по похожести, то это WxWidgets. А так по-моему ничего лучше Qt нет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ido
  опции профиля:
сообщение 9.4.2010, 14:27
Сообщение #5


Студент
*

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

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




Репутация:   0  


Цитата("ViGOur")
какие функции хоть используются?

Я тупо скопировал часть списка
Цитата

Name: WriteFile
Name: SetFilePointer
Name: SetFileAttributesA
Name: ReadFile
Name: MoveFileA
Name: GetVolumeInformationA
Name: GetTempPathA
Name: GetModuleFileNameA
Name: GetLastError
Name: GetFileTime
Name: GetFileSize
Name: GetFileAttributesA
Name: GetDriveTypeA
Name: GetCommandLineA
Name: FindNextFileA
Name: FindFirstFileA
Name: FindClose
Name: FileTimeToSystemTime
Name: DeleteFileA
Name: CreateFileA
Name: CreateDirectoryA
Name: CloseHandle
Name: VirtualProtect
Name: VirtualFree
Name: VirtualAlloc
Name: SuspendThread
Name: Sleep
Не думаю, что это проясняет что-либо. Хотелось бы выработать единообразную методику перехода с WinApi-функций на функции из кроссплатформенных библиотек, тогда, возможно, это будет интересно не только мне. Поэтому, надо искать аналоги в какойто документации.
Цитата("ViGOur")
Как вариант в принципе можно их обернуть чем-то вроде…
Насколько я знаю, это стандартный подход, но в данном случае обертки излишнее. Ведь под Windows уже есть готовая программа. Достаточно просто указать -- Библиотека.Функция (из Qt, WxWidgets…)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 9.4.2010, 14:34
Сообщение #6


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

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




Репутация:   5  


Большинство из перечисленных функций можно заменить функциями из QFile. Ну или написать самому используя QFile.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 9.4.2010, 14:49
Сообщение #7


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

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

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




Репутация:   12  


ну, как вариант - заменить на бустовские библиотеки. но придётся дорабатывать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.4.2010, 15:37
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9666
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(molchanoviv @ 9.4.2010, 17:23) *
Если выбирать по похожести, то это WxWidgets.
Я думаю, что WxWidgets, как и MFC достаточно высокоуровневая обёртка над WinAPI, поэтому код всё равно прийдётся основательно переписывать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ido
  опции профиля:
сообщение 9.4.2010, 16:33
Сообщение #9


Студент
*

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

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




Репутация:   0  


Цитата("molchanoviv")
Большинство из перечисленных функций можно заменить функциями из QFile.
У меня есть возможность посмотреть Qt только в Linux’е. Открыл QFile.h. Если правильно понимаю, то на месте вызовов ядра в Windows-версии должны быть WinApi-функции?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 9.4.2010, 16:42
Сообщение #10


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

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




Репутация:   5  


Цитата(ido @ 9.4.2010, 17:33) *
У меня есть возможность посмотреть Qt только в Linux’е. Открыл QFile.h. Если правильно понимаю, то на месте вызовов ядра в Windows-версии должны быть WinApi-функции?


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

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


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




RSS Текстовая версия Сейчас: 16.1.2021, 17:35