Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
G++;libuvc和opencv2的未定义引用 我试图编译一个C++程序,其中包括LIUBVC .h头文件和OpenCV2../P>的更多头文件。_C++_Reference_Linker_G++ - Fatal编程技术网

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`