Open fryofru opened 2 years ago
ごめんなさい
授業中に説明したつもりだったんですが、資料には書いていないんですが
gcc -o ffi-c++-main ffi-c++.o ffi-c++-main.o -lm -lstdc++
としてみて下さい
ありがとうございます。聴き逃していました。うまく行きました。
◉ 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 .
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: 関数 >& std::operator<< <std::char_traits >(std::basic_ostream<char, std::char_traits >&, char const)' に対する定義されていない参照です
ffi-c++.cpp:(.text+0x5d):
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_traitsstd::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)); }