本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注
Windows下基于MSVC搭建libuvc開(kāi)發(fā)環(huán)境 (qq.com)
前言
libuvc是基于libusb的跨平臺(tái)UVC庫(kù)。在Mac 和 Linux上可以直接構(gòu)建(使用cmake),也可以移植到Windows下。
源碼
https://github.com/libuvc/libuvc
文檔
https://libuvc.github.io/libuvc/
依賴(lài)
libuvc依賴(lài)libusb和pthread,分別參考
Windows下使用pthread-開(kāi)發(fā)環(huán)境搭建
Windows下基于MSVC搭建libusb開(kāi)發(fā)環(huán)境
搭建對(duì)應(yīng)的環(huán)境。
移植到Windows下
工程配置
基于MSVC Community 2022。
需要配置好libusb參考開(kāi)發(fā)環(huán)境,。
在Mac和Linux下使用CMake可以方便的構(gòu)建,參考git的readme即可。在windows下我們可以直接添加源碼到VS下進(jìn)行編譯。
下載代碼
git clone https://github.com/libuvc/libuvc.git
在自己的工程目錄下新建libuvc的文件夾
將源碼目錄的include和src復(fù)制到自己工程的libuvc目錄下,添加如下代碼到工程中

右鍵點(diǎn)擊工程名->屬性
添加包含路徑
$(MSBuildProjectDirectory)\\Src\\libuvc\\include;

代碼修改
llibuvc\\include\\libuvc下復(fù)制一份libuvc_config.h.in改為libuvc_config.h
內(nèi)容修改如下
#ifndef LIBUVC_CONFIG_H
#define LIBUVC_CONFIG_H
#define LIBUVC_VERSION_MAJOR 0
#define LIBUVC_VERSION_MINOR 0
#define LIBUVC_VERSION_PATCH 6
#define LIBUVC_VERSION_STR "0.0.6"
#define LIBUVC_VERSION_INT \\
((0 < < 16) | \\
(0 < < 8) | \\
(6))
/** @brief Test whether libuvc is new enough
* This macro evaluates true if and only if the current version is
* at least as new as the version specified.
*/
#define LIBUVC_VERSION_GTE(major, minor, patch) \\
(LIBUVC_VERSION_INT >= (((major) < < 16) | ((minor) < < 8) | (patch)))
/* #undef LIBUVC_HAS_JPEG */
#endif // !def(LIBUVC_CONFIG_H)
lfatal error C1083: 無(wú)法打開(kāi)包括文件: “sys/time.h”: No such file or directory
先注釋掉#include 改為 #include
l1>C:\\Users\\qinyunti\\OneDrive\\wuqi\\usb\\USB_VS\\USB\\Src\\libuvc\\include\\libuvc\\libuvc.h(475,19): error C2079: “capture_time_finished”使用未定義的 struct“timespec”
添加#include
l1>C:\\Users\\qinyunti\\OneDrive\\wuqi\\usb\\USB_VS\\USB\\Src\\libuvc\\src\\example.c(3,10): fatal error C1083: 無(wú)法打開(kāi)包括文件: “unistd.h”: No such file or directory
注釋掉該頭文件
l1>C:\\Users\\qinyunti\\OneDrive\\wuqi\\usb\\USB_VS\\USB\\Src\\libuvc\\src\\stream.c(662,38): error C2065: “CLOCK_MONOTONIC”: 未聲明的標(biāo)識(shí)符
(void)clock_gettime(CLOCK_MONOTONIC, &strmh->capture_time_finished);
改為
timespec_get(&strmh->capture_time_finished, TIME_UTC);
l1>C:\\Users\\qinyunti\\OneDrive\\wuqi\\usb\\USB_VS\\USB\\Src\\libuvc\\src\\device.c(560,35): error C4996: 'strdup': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _strdup. See online help for details.
strdup改為_(kāi)strdup
l1>C:\\Users\\qinyunti\\OneDrive\\wuqi\\usb\\USB_VS\\USB\\Src\\libuvc\\src\\device.c(165): error C4703: 使用了可能未初始化的本地指針變量“test_dev”
uvc_device_t *test_dev;改為
uvc_device_t *test_dev = 0;
l1>example.obj : error LNK2001: 無(wú)法解析的外部符號(hào) sleep
添加#include < windows.h >
sleep(10);改為Sleep(10000)
運(yùn)行測(cè)試
先切換驅(qū)動(dòng)
下載打開(kāi)zadig-2.8.exe
Options->List All Devices


將pthread.dll復(fù)制到exe所在目錄
然后運(yùn)行,可以看到打印的設(shè)備信息

審核編輯:湯梓紅
-
嵌入式
+關(guān)注
關(guān)注
5198文章
20442瀏覽量
333976 -
Linux
+關(guān)注
關(guān)注
88文章
11758瀏覽量
219006 -
WINDOWS
+關(guān)注
關(guān)注
4文章
3702瀏覽量
94004 -
開(kāi)發(fā)環(huán)境
+關(guān)注
關(guān)注
1文章
270瀏覽量
17637
發(fā)布評(píng)論請(qǐng)先 登錄
Windows下基于MSVC搭建Wintun開(kāi)發(fā)環(huán)境
搭建C語(yǔ)言開(kāi)發(fā)環(huán)境(Windows平臺(tái))匯總
php開(kāi)發(fā)環(huán)境的搭建和使用
ESP32教程——Windows開(kāi)發(fā)環(huán)境搭建.pdf下載
如何在Windows系統(tǒng)下安裝搭建PHP環(huán)境
MM32F013x——Windows環(huán)境下基于Eclipse開(kāi)發(fā)、調(diào)試MM32
MM32F013x——Windows下搭建Eclipse開(kāi)發(fā)環(huán)境
MM32F013x——Windows下搭建Eclipse開(kāi)發(fā)環(huán)境
Windows下基于MSVC搭建libuvc開(kāi)發(fā)環(huán)境
評(píng)論