首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C++中检测Wine是在Linux上运行还是在mac OS环境下运行?

如何在C++中检测Wine是在Linux上运行还是在mac OS环境下运行?
EN

Stack Overflow用户
提问于 2019-05-23 22:50:56
回答 2查看 323关注 0票数 0

我有一个C++应用程序,它使用Wine for mac和Wine for Linux运行。我正在寻找一种方法来检测使用C++的主机操作系统。

我找到的唯一方法是检测它是否是Wine (使用wine_get_version),但我仍然需要将mac和Linux的运行分开。

你知道该怎么做吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-24 03:31:36

正如@NathanOliver在评论中提到的,你应该使用wine_get_host_version()来实现这一点。与wine_get_version()一样,您需要使用GetProcAddress()从NTDLL获取函数指针。函数指针的C函数签名为:

代码语言:javascript
复制
void (CDECL *)( const char **sysname, const char **release )

您提供了两个const char*变量的地址,然后wine_get_host_version()将它们设置为指向两个字符串。字符串是由uname()系统库函数输出的字符串。(如果您对输出不感兴趣,则可以安全地为该参数传递NULL。)

对于macOS,*sysname将设置为指向"Darwin"。对于Linux,我相信它会指向"Linux"。(在我测试的几个系统上确实如此,但我不知道这是否一致。)

票数 3
EN

Stack Overflow用户

发布于 2021-02-21 17:02:54

我们需要检查由编译器(GNU、GCC或G++)定义的宏,以检查c/c++脚本在其上执行的操作系统。

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    #if __APPLE__
        // apple specific code
    #elif _WIN32
        // windows specific code
    #elif __LINUX__
        // linux specific code
    #else
        // general code or warning
    #endif
    // general code
    return 0;
}

some more macros

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56277858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档