Hidapi无法在ubuntu下编译任何代码

时间:2013-03-15 13:31:34

标签: c++ linux ubuntu hidapi

我正在尝试使用Ubuntu 12.04下的hidapi库。我已经按照github中的教程进行了操作,但是,即使它附带的测试代码也没有用。它总是抱怨未定义的引用。我找不到任何解决方案。即使安装成功,我也无法在任何地方找到图书馆。

我正在尝试编译hidtest.cpp,第一个错误出现在hid_init()行。

有人可以帮助我吗?

编辑:

make all 

Building target: hidtest

Invoking: Cross G++ Linker

g++  -o "hidtest"  ./src/hidtest.o   

./src/hidtest.o: In function `main':
/../src/hidtest.cpp:35: undefined reference to `hid_init'
/../src/hidtest.cpp:38: undefined reference to `hid_enumerate'
/../src/hidtest.cpp:53: undefined reference to `hid_free_enumeration'
/../src/hidtest.cpp:63: undefined reference to `hid_open'
/../src/hidtest.cpp:71: undefined reference to `hid_get_manufacturer_string'
/../src/hidtest.cpp:78: undefined reference to `hid_get_product_string'
/../src/hidtest.cpp:85: undefined reference to `hid_get_serial_number_string'
/../src/hidtest.cpp:93: undefined reference to `hid_get_indexed_string'
/../src/hidtest.cpp:99: undefined reference to `hid_set_nonblocking'
/../src/hidtest.cpp:103: undefined reference to `hid_read'
/../src/hidtest.cpp:111: undefined reference to `hid_send_feature_report'
/../src/hidtest.cpp:120: undefined reference to `hid_get_feature_report'
/../src/hidtest.cpp:123: undefined reference to `hid_error'
/../src/hidtest.cpp:137: undefined reference to `hid_write'
/../src/hidtest.cpp:140: undefined reference to `hid_error'
/../src/hidtest.cpp:146: undefined reference to `hid_write'
/../src/hidtest.cpp:155: undefined reference to `hid_read'
/../src/hidtest.cpp:173: undefined reference to `hid_close'
/../src/hidtest.cpp:176: undefined reference to `hid_exit'

collect2: ld returned 1 exit status

make: *** [hidtest] Error 1

这是在Ubuntu 12.04下使用Eclipse Juno

完成的

1 个答案:

答案 0 :(得分:4)

这些是链接器错误:

  

collect2: ld 返回1退出状态

我最初认为你没有将你的代码与hidapi库链接起来,但是我意外地设法重现你所遇到的确切错误的唯一方法是将gcc参数放入错误的顺序。这失败并具有相同的输出:

$ g++ -c -Ihidapi hidtest/hidtest.cpp -o hidtest/hidtest.o
$ g++ -Llinux/.libs -lhidapi-hidraw hidtest/hidtest.o -o test

您的目标文件需要出现在链接阶段的gcc参数中的库之前。

以下工作正常:

$ g++ -c -Ihidapi hidtest/hidtest.cpp -o hidtest/hidtest.o
$ g++ -Llinux/.libs hidtest/hidtest.o -lhidapi-hidraw -o test
$ LD_LIBRARY_PATH=linux/.libs ./test

请注意,我必须使用-I,-L和LD_LIBRARY_PATH,因为我没有安装hidapi,我从hidapi源文件夹中做了所有事情。