所以我通常有一个基于开源跨平台库的小型 C++ 项目。所以它可能会在linux下编译。因此,当我需要实现一些特定于平台的类函数时,我就达到了这一点。
我有一个包含所有函数声明的类头和包含实现的 cpp 文件。首先:如何在标头中声明我的平台特定函数,这样当我尝试在 Linux 下编译时,它不会尝试编译 Windows 特定函数......并且在 Windows 上编译器不会尝试编译包含标头等的 Linux 函数。
因此对于 Windows,我需要一些如何包装此类超级特定功能
HRESULT EnumerateDevices(REFGUID category, IEnumMoniker **ppEnum)
void DisplayDeviceInformation(IEnumMoniker *pEnum)
还有一些标题
#include <windows.h>
#include <dshow.h>
#pragma comment(lib, "strmiids")
对于linux我有这样的头文件
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/videodev.h>
我有一个名为
void PrintCamerasList()
的函数,我想要一个用于我单独实现的平台实现。
我希望你能看到我需要的东西。所以一般来说我需要一些使用我的功能的例子,或者一旦你可以发明 - 让你的想象力流动!)
那么为什么我需要这一切 - 我正在使用 OpenCV 创建一些控制台应用程序,我需要列出用户相机名称。 OpenCV 无法自行完成此操作。所以我问如何为我感兴趣的两个平台做到这一点 - windows 和 linux
#ifdef WIN_32
// Windows stuff...
#else
// Linux stuff
#endif
检查编译器或包含的标头中定义的 windows 标志的确切值