jsk-enshu / robot-programming

This is exercise for robot-programming.
38 stars 291 forks source link

11/15 c++言語におけるFFI(資料p3〜) リンクができない #412

Open fryofru opened 2 years ago

fryofru commented 2 years ago

ffi-c++.cppとffi-c++-main.cというファイルを作り、それぞれ.oファイルを作ったのち、リンクするために $ gcc -o ffi-c++-main ffi-c++.o ffi-c++-main.o -lm を実行すると以下のようなエラーがでます。

mech-user@ki00128:~/3A_robotsystem(pass:soft3)/7$ gcc -o ffi-c++-main ffi-c++.o ffi-c++-main.o -lm ffi-c++.o: 関数 hello' 内: ffi-c++.cpp:(.text+0x3c):std::cout' に対する定義されていない参照です ffi-c++.cpp:(.text+0x41): std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' に対する定義されていない参照です ffi-c++.cpp:(.text+0x53):std::basic_ostream<char, std::char_traits >& std::operator<< <std::char_traits >(std::basic_ostream<char, std::char_traits >&, char const)' に対する定義されていない参照です ffi-c++.cpp:(.text+0x5d): std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)' に対する定義されていない参照です ffi-c++.cpp:(.text+0x68):std::ostream::operator<<(std::ostream& ()(std::ostream&))' に対する定義されていない参照です ffi-c++.o: 関数 __static_initialization_and_destruction_0(int, int)' 内: ffi-c++.cpp:(.text+0x94):std::ios_base::Init::Init()' に対する定義されていない参照です ffi-c++.cpp:(.text+0xa9): `std::ios_base::Init::~Init()' に対する定義されていない参照です collect2: error: ld returned 1 exit status

以下2つのファイルのコードです。 //ffi-c++.cpp

include

include

extern "C" { double sinc(double d){ return(sin(d)/d); } void hello(char* str){ std::cout << "hello " << str << std::endl; } }

//ffi-c++-main.c

include

double sinc(double x); void hello(char *str);

int main(){ double f = 1.0; hello("world"); fprintf(stderr,"sinc(%f) = %f\n",f,sinc(f)); }

k-okada commented 2 years ago

ごめんなさい 授業中に説明したつもりだったんですが、資料には書いていないんですが gcc -o ffi-c++-main ffi-c++.o ffi-c++-main.o -lm -lstdc++ としてみて下さい

fryofru commented 2 years ago

ありがとうございます。聴き逃していました。うまく行きました。

k-okada commented 2 years ago

良かったです

◉ Kei Okada

2021年11月19日(金) 16:52 Ryo Furukawa @.***>:

ありがとうございます。聴き逃していました。うまく行きました。

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/jsk-enshu/robot-programming/issues/412#issuecomment-973838616, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADYNXGWK54GTPO6VP4IDN3UMX6YPANCNFSM5IJRJHKQ .