現在C++でLRFクラスを作ろうとしているのですが,いざビルドしてみると読み込んだライブラリを定義しているソースのそのライブラリのパス(例:ticks.cpp内でticks.hが見つから無いと言われた)が違うと言われたのですべて修正したところ↓のようなエラーが出てしましまいました.どうすればいいですか.環境はUbuntu18.04.1,Eclipse4.7.3a(C/C++),LinuxGCCです.また,URGライブラリはプロジェクトにインポートしました.
make all
Building file: ../src/urg_serial.c
Invoking: GCC C Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/urg_serial.d" -MT"src/urg_serial.o" -o "src/urg_serial.o" "../src/urg_serial.c"
Finished building: ../src/urg_serial.c
Building file: ../src/urg_serial_linux.c
Invoking: GCC C Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/urg_serial_linux.d" -MT"src/urg_serial_linux.o" -o "src/urg_serial_linux.o" "../src/urg_serial_linux.c"
../src/urg_serial_linux.c:20:31: error: unknown type name ‘urg_serial_t’
static void serial_initialize(urg_serial_t serial)
^~~~~~~~~~~~
../src/urg_serial_linux.c:29:26: error: unknown type name ‘urg_serial_t’
static void serial_clear(urg_serial_t serial)
^~~~~~~~~~~~
../src/urg_serial_linux.c:38:17: error: unknown type name ‘urg_serial_t’
int serial_open(urg_serial_t serial, const char device, long baudrate)
^~~~~~~~~~~~
../src/urg_serial_linux.c:82:19: error: unknown type name ‘urg_serial_t’
void serial_close(urg_serial_t serial)
^~~~~~~~~~~~
../src/urg_serial_linux.c:91:25: error: unknown type name ‘urg_serial_t’
int serial_set_baudrate(urg_serial_t serial, long baudrate)
^~~~~~~~~~~~
../src/urg_serial_linux.c:134:18: error: unknown type name ‘urg_serial_t’
int serial_write(urg_serial_t serial, const char data, int size)
^~~~~~~~~~~~
../src/urg_serial_linux.c:143:25: error: unknown type name ‘urg_serial_t’
static int wait_receive(urg_serial_t serial, int timeout)
^~~~~~~~~~~~
../src/urg_serial_linux.c:165:29: error: unknown type name ‘urg_serial_t’
urg_serial_t serial, int timeout)
^~~~~~~~~~~~
../src/urg_serial_linux.c:193:17: error: unknown type name ‘urg_serial_t’
int serial_read(urg_serial_t serial, char data, int max_size, int timeout)
^~~~~~~~~~~~
src/subdir.mk:80: recipe for target 'src/urg_serial_linux.o' failed
make: *** [src/urg_serial_linux.o] Error 1
13:53:00 Build Finished (took 170ms)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
現在C++でLRFクラスを作ろうとしているのですが,いざビルドしてみると読み込んだライブラリを定義しているソースのそのライブラリのパス(例:ticks.cpp内でticks.hが見つから無いと言われた)が違うと言われたのですべて修正したところ↓のようなエラーが出てしましまいました.どうすればいいですか.環境はUbuntu18.04.1,Eclipse4.7.3a(C/C++),LinuxGCCです.また,URGライブラリはプロジェクトにインポートしました.
make all
Building file: ../src/urg_serial.c
Invoking: GCC C Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/urg_serial.d" -MT"src/urg_serial.o" -o "src/urg_serial.o" "../src/urg_serial.c"
Finished building: ../src/urg_serial.c
Building file: ../src/urg_serial_linux.c
Invoking: GCC C Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/urg_serial_linux.d" -MT"src/urg_serial_linux.o" -o "src/urg_serial_linux.o" "../src/urg_serial_linux.c"
../src/urg_serial_linux.c:20:31: error: unknown type name ‘urg_serial_t’
static void serial_initialize(urg_serial_t serial)
^~~~~~~~~~~~
../src/urg_serial_linux.c:29:26: error: unknown type name ‘urg_serial_t’
static void serial_clear(urg_serial_t serial)
^~~~~~~~~~~~
../src/urg_serial_linux.c:38:17: error: unknown type name ‘urg_serial_t’
int serial_open(urg_serial_t serial, const char device, long baudrate)
^~~~~~~~~~~~
../src/urg_serial_linux.c:82:19: error: unknown type name ‘urg_serial_t’
void serial_close(urg_serial_t serial)
^~~~~~~~~~~~
../src/urg_serial_linux.c:91:25: error: unknown type name ‘urg_serial_t’
int serial_set_baudrate(urg_serial_t serial, long baudrate)
^~~~~~~~~~~~
../src/urg_serial_linux.c:134:18: error: unknown type name ‘urg_serial_t’
int serial_write(urg_serial_t serial, const char data, int size)
^~~~~~~~~~~~
../src/urg_serial_linux.c:143:25: error: unknown type name ‘urg_serial_t’
static int wait_receive(urg_serial_t serial, int timeout)
^~~~~~~~~~~~
../src/urg_serial_linux.c:165:29: error: unknown type name ‘urg_serial_t’
urg_serial_t serial, int timeout)
^~~~~~~~~~~~
../src/urg_serial_linux.c:193:17: error: unknown type name ‘urg_serial_t’
int serial_read(urg_serial_t serial, char data, int max_size, int timeout)
^~~~~~~~~~~~
src/subdir.mk:80: recipe for target 'src/urg_serial_linux.o' failed
make: *** [src/urg_serial_linux.o] Error 1
13:53:00 Build Finished (took 170ms)
URGライブラリをライブラリファイル(.soや.a)から使うのではなく、
ソースをそのまま取り込もうとされていますか?
そういう意図ではないのであれば
http://urgnetwork.sourceforge.net/html_ja/usage_gcc_page.html
に記載している方法で通常のライブラリと同様の使い方を行ってください。
ソースをそのままプロジェクトに取り込みたいのであればurg_serial_linux.cはソースファイルとしてコンパイルする必要はありません。
urg_serial.cの内部を見ていただければわかりますが、
urg_serial.cではLinux環境の場合はurg_serial_linux.cをincludeしています。
urg_serial_linux.cはurg_serial.cからincludeされることを前提として作られていますので、単体でコンパイルはできません。
ですので、includeディレクトリとしてurg_serial_linux.cを置いているディレクトリを指定していただくだけで、urg_serial_linux.cをプロジェクトのソースファイルとして登録する必要はありません。(urg_serial_linux.cとurg_serial.cを同じディレクトリに置いている場合はincludeディレクトリの指定は必要ありません)
Last edit: j-fujimoto 2018-08-03
Eclipseを使わずに通常の方法でやることにしました.