如何在C ++中包含动态库

时间:2013-11-29 19:24:42

标签: c++ libusb

如果我搜索包含文件 libusb.h 的文件,

$grep -r "libusb.h" /usr/local/lib/

我明白了:

  

二进制文件/usr/local/lib//libusb-1.0.0.dylib匹配
  二进制文件/usr/local/lib//libusb-1.0.a匹配
  二进制文件/usr/local/lib//libusb-1.0.dylib匹配

但是当我编写课程时,我得到了:

test.cpp:2:10: fatal error: 'libusb.h' file not found
#include <libusb.h>

现在我知道这是因为没有正确包含 / usr / local / lib 文件夹。我尝试了以下等等,但似乎没有什么能解决它。

gcc -lusb test.cpp
C_INCLUDE_PATH=/usr/local/lib
export C_INCLUDE_PATH

更新

感谢你的帮助,我提出了这个命令......

gcc test.cpp -I/usr/local/include -L/usr/local/lib -lusb-1.0

但现在我明白了......

ld: symbol(s) not found for architecture x86_64

我尝试添加

  

-stdlib = ++的libstdc

但这似乎也没有帮助。

3 个答案:

答案 0 :(得分:2)

包含lib路径在这里不会帮到你。 lib路径包含您链接的二进制文件的路径。

您需要找到 include 路径,该路径提供您链接的lib的导出符号的声明。

一个共同的分布(不是一成不变的!),是:

lib/       (binaries to link against)
include/   (declarations are here!)
bin/       (.so on *nix or .dll or Windows)

答案 1 :(得分:1)

我可能在这里打死马。但是我有同样的问题,列出的解决方案对我不起作用。如果你在同一条船上,这就是我最终的工作:

gcc -I /usr/include/libusb-1.0/ -lusb-1.0 example.c

答案 2 :(得分:0)

这有效......

gcc -std=c++0x -stdlib=libc++ -I/usr/local/include -L/usr/local/lib -lusb-1.0 -lstdc++ test.cpp

您也可以切换到Clang。这有效:

clang++ -std=c++0x -stdlib=libc++ -I/usr/local/include -L/usr/local/lib -lusb-1.0 test.cpp

有关详情,请参阅评论。