2017-05-21 17 views
0

残念なことに0.9.1 cppコードのコンパイル時に問題があります。Cpp未定義の `Apache :: thrift :: transport :: TSocket :: TSocket(std :: string const&、int) '

このような

私のメイクファイル:私は(host_i.c_strを試してみました

std::string host_i=string("localhost"); 
boost::shared_ptr<TTransport> socket(new TSocket(host_i,9537)); 

objects = genFeaVec_multiThread_HSV.o imgIDservice_types.o ImgIDdifNameService.o 

genFeaVec_multiThread_HSV_thrift : $(objects) 


g++ -o genFeaVec_multiThread_HSV_thrift $(objects) -I/usr/include -L/usr/lib64 -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_video -lopencv_imgproc -lopencv_core -lthrift 

ことを告げる++コンパイラグラム:私のcppのコードは、このようなものです

g++ -o genFeaVec_multiThread_HSV_thrift genFeaVec_multiThread_HSV.o imgIDservice_types.o ImgIDdifNameService.o -I/usr/include -L/usr/lib64 -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_video -lopencv_imgproc -lopencv_core -I/usr/include/ -L/usr/lib64 -lthrift -lthriftnb -levent 
undefined reference to `apache::thrift::transport::TSocket::TSocket(std::string const&, int)' 

)と "localhost"は動作しません。ザ・ファイルはOKですが含ま

nm -CD /usr/lib64/libthrift-0.9.1.so | grep TSocket 

`00000000000670f0 T apache::thrift::transport::TSocket::TSocket(int) 
0000000000066ea0 T apache::thrift::transport::TSocket::TSocket(std::string) 
0000000000066d80 T apache::thrift::transport::TSocket::TSocket(std::string, int) 
0000000000066fc0 T apache::thrift::transport::TSocket::TSocket() 
00000000000670f0 T apache::thrift::transport::TSocket::TSocket(int) 
0000000000066ea0 T apache::thrift::transport::TSocket::TSocket(std::string) 
0000000000066d80 T apache::thrift::transport::TSocket::TSocket(std::string, int)` 

: そして、私はlibに-lthriftをチェックしています。 dir

私は問題がまだlibをインポートする方法だと思います。 しかし、メイクファイルに何が問題なのか分かりません。

+0

と私も試してみましたが、動作しません... – timruning

答えて

0

-lthriftではなく、stdlib libc++を試してください。

+0

-lstdC++を追加しますか?それでも動作することはできません。 – timruning