G++;libuvc和opencv2的未定义引用 我试图编译一个C++程序,其中包括LIUBVC .h头文件和OpenCV2../P>的更多头文件。
问题是,我得到了以下错误(未定义的引用): 此外,使用绝对路径没有任何效果,例如:G++;libuvc和opencv2的未定义引用 我试图编译一个C++程序,其中包括LIUBVC .h头文件和OpenCV2../P>的更多头文件。,c++,reference,linker,g++,C++,Reference,Linker,G++,问题是,我得到了以下错误(未定义的引用): 此外,使用绝对路径没有任何效果,例如: #include "/usr/local/include/libuvc.h" ... 有人知道如何解决参考错误吗?试试看 g++ UVCCameraHandler.cpp -I/usr/local/include/libuvc -I/usr/local/include/opencv2 -luvc -lopencv 最好的 g++ UVCCameraHandler.cpp `pkg-config --libs
#include "/usr/local/include/libuvc.h"
...
有人知道如何解决参考错误吗?试试看
g++ UVCCameraHandler.cpp -I/usr/local/include/libuvc -I/usr/local/include/opencv2 -luvc -lopencv
最好的
g++ UVCCameraHandler.cpp `pkg-config --libs --cflags opencv` `pkg-config --libs --cflags lubuvc`
试一试
最好的
g++ UVCCameraHandler.cpp `pkg-config --libs --cflags opencv` `pkg-config --libs --cflags lubuvc`
构建C++程序是一个三步骤:
g++
程序的GCC),将步骤2和3组合成一个动作
在上面的步骤2中,包含头文件
在步骤3中,您需要链接到实际的库。您没有这样做,因此链接器会抱怨找不到您使用的函数
使用GCC链接库是通过-l
(小写l)选项完成的,该选项列出了库名称。例如-lopencv
链接到OpenCV库
如果库位于非标准位置(通常是
/usr/local/lib
),那么您也需要告诉链接器在哪里可以找到库。这是通过-L
选项完成的,类似于您已经用来告诉编译器在哪里搜索头文件的-I
选项。例如,<>代码> -/Ur/Prime/LIB .< /P> < P>构建C++程序是一个三步过程:
g++
程序的GCC),将步骤2和3组合成一个动作
在上面的步骤2中,包含头文件
在步骤3中,您需要链接到实际的库。您没有这样做,因此链接器会抱怨找不到您使用的函数
使用GCC链接库是通过-l
(小写l)选项完成的,该选项列出了库名称。例如-lopencv
链接到OpenCV库
如果库位于非标准位置(通常是
/usr/local/lib
),那么您也需要告诉链接器在哪里可以找到库。这是通过-L
选项完成的,类似于您已经用来告诉编译器在哪里搜索头文件的-I
选项。例如,-L/usr/local/lib
您需要链接到正确的库(假设您的库位于/usr/local/lib
):
g++UVCCameraHandler.cpp-I/usr/local/include/libuvc-I/usr/local/include/opencv2-L/usr/local/lib-luvc-lopencv\u core
您需要链接到正确的库(假设您的库位于/usr/local/lib
):
g++UVCCameraHandler.cpp-I/usr/local/include/libuvc-I/usr/local/include/opencv2-L/usr/local/lib-luvc-lopencv\u core
也不起作用:/usr/bin/ld:找不到-lopencv2是的,解决方案是“-lopencv。所以第三条线起作用了。但现在我遇到了另一个问题:加载共享库时出错:libuvc.so.0:无法打开共享对象文件:没有这样的文件或目录我正在使用Raspberry Debian Jessie。libuvc.so.0的路径是/usr/lib/arm-linux-gnueabihf/libuvc.so.0,使用LD_-LIBRARY_路径无效,其设置为/usr/local/lib:/usr/lib/arm-linux-gnueabihf,但路径设置正确:root@Raspi_DataHarvest:~/Schreibtisch#ld--verbose | grep SEARCH | u DIR | tr-s''\\012搜索目录(“=/usr/arm-linux-gnueabihf/lib”)搜索目录(“=/usr/local/lib/arm-linux-gnueabihf”)搜索目录(“=/usr/local/lib”)搜索目录(“=/lib”)搜索目录(“=/usr/lib/arm-linux-gnueabihf”)搜索目录(=/usr/lib”)让我们来看看。也不起作用:/usr/bin/ld:找不到-lopenc2yes,解决方案是的“-洛彭科夫“。所以第三行起作用了。但现在我遇到了另一个问题:加载共享库时出错:libuvc.so.0:无法打开共享对象文件:没有这样的文件或目录我正在使用Raspberry Debian Jessie。libuvc.so.0的路径是/usr/lib/arm-linux-gnueabihf/libuvc.so.0,使用LD_-LIBRARY_路径无效,其设置为/usr/local/lib:/usr/lib/arm-linux-gnueabihf,但路径设置正确:root@Raspi_DataHarvest:~/Schreibtisch#ld--verbose | grep SEARCH | u DIR | tr-s''\\012搜索目录(“=/usr/arm-linux-gnueabihf/lib”)搜索目录(“=/usr/local/lib/arm-linux-gnueabihf”)搜索目录(“=/usr/local/lib”)搜索目录(“=/lib/arm-linux-gnueabihf”)搜索目录(“=/usr/lib/arm-linux-gnueabihf”)搜索目录(“=/usr/lib”)让我们了解可能的货物副本的可能副本,完整解释为了清楚起见,只需从luisp的答案中重新表述命令行即可:--g++UVCCameraHandler.cpp-I/usr/local/include/opencv2-L/usr/local/lib-luvc-lopencv撸core-is--g++[source.cpp]-I[库头目录的路径;对于编译器]-L[预编译库目录的路径;用于链接器]-l[预编译库的名称;用于链接器]Good,full explauration只需从luisp的答案中重新表述命令行,以清晰明了:--g++UVCCameraHandler.cpp-I/usr/local/include/libuvc-I/usr/local/include/opencv2-L/usr/local/lib-luvc-lopencv_core--是--g++[source.cpp]-I[库头目录的路径;对于编译器]-L[预编译库目录的路径;用于链接器]-l[预编译库的名称;用于链接器]
g++ UVCCameraHandler.cpp `pkg-config --libs --cflags opencv` `pkg-config --libs --cflags lubuvc`