c++ - 'windows.h',其他平台呢?

标签 c++ stl cross-platform

我在Windows上使用Visual Studio,并且有一个名为windows.h的头文件,它当然使我可以访问win32 API。
但是当我尝试使用其他平台API(例如linux API)时。我找不到任何具有该名称的头文件,这意味着我不能使用Windows以外的任何其他OS API,
现在这里的问题是:如果我不想制作一个跨平台程序该怎么办?当我无法正确访问其API时,我曾尝试进行一段时间的研究,但无法得到我的问题的任何答案,这确实困扰着我,因此更具体地说,这些是我的问题:
1-为什么我只能在所有其他操作系统中使用Windows API?
是因为我在Windows上进行编码,所以如果我在“其他地方”进行编码,会有所不同吗?
还是与编译器本身有关?
2-如果要使用其他API,必须使用外部库怎么办?如果是这种情况,那么c++跨平台的标准库怎么样,我的意思是,如果它是跨平台的,那么应该存在该库提供的其他特定于平台的 header ,对吗?

最佳答案

but when I try to use other platforms API like the linux API for example. I don't find any header file with that name


系统API没有名为<linux>的 header 。 POSIX操作系统规范(Linux遵循该规范)列出了几个 header ,这些 header 包含您可能在该系统上的Windows.h中找到的功能。 POSIX规范与C标准库重叠,并且C标准库实现还提供POSIX特定的 header 。有关 header 的完整列表,请参见Linux手册或POSIX规范。

what if I want to use another [system] API


您至少需要该API的头文件才能编译调用它们的程序。此外,您将需要库归档文件才能链接程序。而且,您需要告诉编译器您所针对的系统。默认情况下,所有编译器均假定您以运行该编译器的系统为目标。您需要查阅编译器的文档,以了解是否可以进行交叉编译以及如何进行交叉编译。
或更简单的方法:在提供API的系统上进行编译。 header 可能需要单独安装。

... how is the Standard Library in c++ cross platform


每个系统都有自己的标准库。标准库的某些实现是跨平台的,但不是全部。例如,libstdc++(它是GNU项目的一部分,是Linux中的默认标准库),它在包括Windows在内的许多平台上都可用。相比之下,Msvc标准库仅在Windows上可用。

关于c++ - 'windows.h',其他平台呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63537346/

相关文章:

c++ - 在 C++ 中使用友元类和模板时出现超出范围错误

c++ - 将 ID3D11Texture2D 复制到字节数组,导致内存不足错误 c++

c++ - 无法在构造函数中进行设置元素插入

c++ - 使用 CMake 构建 Boost 系统库?

不破坏平台独立性的 Java-Mac OS X 集成

c++ - For循环,检查相同的对

c++ - 在 C++ 中读取 Fortran 二进制文件

c++ - 为什么 STL 优先级队列错误地排序我的类对象

c++ - 创建一个小的 cv::Mat 列表并对其进行迭代的正确方法是什么?

go - 如何在 Go 中创建可嵌入的 C-API 库?