Как определить, работает ли Wine из Linux или из среды Mac OS в C ++? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть приложение на C ++, которое работает с использованием Wine для Mac OS и Wine для Linux. Я ищу способ определения операционной системы на C ++.

Единственное, что я нашел, - это способ определить, является ли это Wine или нет (с помощью wine_get_version), но мне все еще нужно разделить Mac OS и Linux.

Есть идеи как это сделать?

Спасибо!

1 Ответ

2 голосов
/ 23 мая 2019

Как уже упоминалось в комментариях @NathanOliver, вы должны использовать wine_get_host_version() для этого. Как и в случае wine_get_version(), вам нужно использовать GetProcAddress(), чтобы получить указатель на функцию из NTDLL. Сигнатура функции C для указателя функции будет:

void (CDECL *)( const char **sysname, const char **release )

Вы предоставляете адрес двух const char* переменных, а wine_get_host_version() устанавливает их для указания на две строки. Строки - это те, которые выводятся функцией системной библиотеки uname(). (Если вы не заинтересованы в выводе, безопасно передать NULL для этого параметра.)

Для macOS *sysname будет установлен на "Darwin". Я считаю, что для Linux это будет указывать на "Linux". (Это было сделано на нескольких системах, которые я тестировал, но я не знаю, насколько это соответствует.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...