2

Ubuntu12.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

これはUbuntu12.04で、EclipseJunoを使用して行われます。

4

1 に答える 1

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 ソース フォルダーからすべてを実行しました。

于 2013-03-15T14:16:53.300 に答える