Итак, в общем, у меня есть небольшой проект C ++, основанный на кроссплатформенных библиотеках OpenSource.Так что, вероятно, он будет компилироваться под 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 c не может делать это самостоятельно .поэтому я спросил, как это сделать для обеих платформ моего интереса - windows и linux