Makefile檔案:
PROTOCOLS_DIR=../../../common/protobuf
PROTOBUFC_DIR=../../../common/protobuf-c # path where protobuf-c repo was cloned
CommandBuilder_DIR=../../../common/CommandBuilder/
header_DIR=../vc-using-framestream/
common_DIR=../../../common/code/
INCLUDES=-I $(PROTOCOLS_DIR) -I $(PROTOBUFC_DIR) -I $(header_DIR) -I $(common_DIR)
SOURCES=../vc-using-framestream/main.cpp ../vc-using-framestream/Frame.cpp ../vc-using-framestream/args.cpp ../vc-using-framestream/ArisBeacons.cpp ../vc-using-framestream/Connection.cpp ../vc-using-framestream/ArisRecording.cpp
all: protocols connect
clean:
rm connect *.proto ../*.pb-c.*
protocols:
cp ../../../common/protobuf/*.proto .
protoc --cpp_out=../vc-using-framestream/. *.proto
connect: $(SOURCES)
g++ -std=c++17 -o connect $(SOURCES) $(INCLUDES) -L/usr/lib -lboost_system -lprotobuf -lboost_thread
makefile檔案運行:
cp ../../../common/protobuf/*.proto .
protoc --cpp_out=../vc-using-framestream/. *.proto
g++ -std=c++17 -o connect ../vc-using-framestream/main.cpp ../vc-using-framestream/Frame.cpp ../vc-using-framestream/args.cpp ../vc-using-framestream/ArisBeacons.cpp ../vc-using-framestream/Connection.cpp ../vc-using-framestream/ArisRecording.cpp -I ../../../common/protobuf -I ../../../common/protobuf-c -I ../vc-using-framestream/ -I ../../../common/code/ -L/usr/lib -lboost_system -lprotobuf -lboost_thread
/tmp/ccYcMGWT.o:在函式‘Aris::Network::FrameStreamListener::GetMetrics()’中:
main.cpp:(.text._ZN4Aris7Network19FrameStreamListener10GetMetricsEv[_ZN4Aris7Network19FrameStreamListener10GetMetricsEv]+0x26):對‘Aris::Network::SlidingWindowFrameAssembler::GetMetrics()’未定義的參考
/tmp/ccvt9x8T.o:在函式‘Frame::Frame(std::vector<unsigned char, std::allocator<unsigned char> >&&, std::vector<unsigned char, std::allocator<unsigned char> >&&)’中:
Frame.cpp:(.text+0x8e):對‘Aris::Reorder(ArisFrameHeader&, unsigned char*)’未定義的參考
/tmp/ccl6aTc0.o:在函式‘_ZZN11ArisBeacons18FindBySerialNumberEjENKUlT_T0_T1_T2_E_clIN5boost6system10error_codeENS6_4asio2ip14basic_endpointINSA_3udpEEEPKhmEEDaS0_S1_S2_S3_’中:
ArisBeacons.cpp:(.text+0xe2):對‘aris::Availability::~Availability()’未定義的參考
ArisBeacons.cpp:(.text+0xf3):對‘aris::Availability::~Availability()’未定義的參考
/tmp/ccl6aTc0.o:在函式‘ArisBeacons::FindBySerialNumber(unsigned int)’中:
ArisBeacons.cpp:(.text+0x1a9):對‘UdpListener::UdpListener(boost::asio::io_service&, unsigned short, bool, unsigned long, std::function<void (boost::system::error_code const&, boost::asio::ip::basic_endpoint<boost::asio::ip::udp>, unsigned char const*, unsigned long)>)’未定義的參考
ArisBeacons.cpp:(.text+0x207):對‘UdpListener::~UdpListener()’未定義的參考
ArisBeacons.cpp:(.text+0x238):對‘UdpListener::~UdpListener()’未定義的參考
/tmp/ccl6aTc0.o:在函式‘aris::Availability::Availability()’中:
ArisBeacons.cpp:(.text._ZN4aris12AvailabilityC2Ev[_ZN4aris12AvailabilityC5Ev]+0x19):對‘aris::Availability::Availability(google::protobuf::Arena*)’未定義的參考
/tmp/ccKiwXhb.o:在函式‘Connection::Connection(boost::asio::io_service&, boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >&&, std::function<void (Aris::Network::FrameBuilder&)>, Aris::Common::SystemType, aris::Command_SetSalinity_Salinity, boost::asio::ip::address, Aris::Network::optional<boost::asio::ip::basic_endpoint<boost::asio::ip::udp> > const&, float)’中:
Connection.cpp:(.text+0x3ea):對‘Aris::Network::FrameStreamListener::FrameStreamListener(boost::asio::io_service&, std::function<void (Aris::Network::FrameBuilder&)>, std::function<unsigned long ()>, boost::asio::ip::address, Aris::Network::optional<boost::asio::ip::basic_endpoint<boost::asio::ip::udp> >)’未定義的參考
Connection.cpp:(.text+0x443):對‘Aris::Network::CommandBuilder::SetTime()’未定義的參考
Connection.cpp:(.text+0x46b):對‘aris::Command::~Command()’未定義的參考
Connection.cpp:(.text+0x502):對‘Aris::Network::CommandBuilder::SetFrameStreamReceiver(char const*, unsigned int)’未定義的參考
Connection.cpp:(.text+0x547):對‘Aris::Network::CommandBuilder::SetFrameStreamReceiver(unsigned int)’未定義的參考
Connection.cpp:(.text+0x56f):對‘aris::Command::~Command()’未定義的參考
Connection.cpp:(.text+0x5db):對‘Aris::Network::CommandBuilder::RequestAcousticSettings(Aris::Common::AcousticSettings const&)’未定義的參考
Connection.cpp:(.text+0x603):對‘aris::Command::~Command()’未定義的參考
Connection.cpp:(.text+0x61a):對‘Aris::Network::CommandBuilder::SetSalinity(aris::Command_SetSalinity_Salinity)’未定義的參考
Connection.cpp:(.text+0x642):對‘aris::Command::~Command()’未定義的參考
Connection.cpp:(.text+0x665):對‘Aris::Network::CommandBuilder::SetFocusRange(float)’未定義的參考
Connection.cpp:(.text+0x68d):對‘aris::Command::~Command()’未定義的參考
Connection.cpp:(.text+0x6fa):對‘aris::Command::~Command()’未定義的參考
Connection.cpp:(.text+0x70e):對‘aris::Command::~Command()’未定義的參考
Connection.cpp:(.text+0x73d):對‘aris::Command::~Command()’未定義的參考
Connection.cpp:(.text+0x751):對‘aris::Command::~Command()’未定義的參考
/tmp/ccKiwXhb.o:Connection.cpp:(.text+0x765): 跟著更多未定義的參考到 aris::Command::~Command()
/tmp/ccKiwXhb.o:在函式‘Connection::Connection(boost::asio::io_service&, boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >&&, std::function<void (Aris::Network::FrameBuilder&)>, Aris::Common::SystemType, aris::Command_SetSalinity_Salinity, boost::asio::ip::address, Aris::Network::optional<boost::asio::ip::basic_endpoint<boost::asio::ip::udp> > const&, float)’中:
Connection.cpp:(.text+0x77f):對‘Aris::Network::FrameStreamListener::~FrameStreamListener()’未定義的參考
/tmp/ccKiwXhb.o:在函式‘Connection::~Connection()’中:
Connection.cpp:(.text+0x834):對‘Aris::Network::FrameStreamListener::~FrameStreamListener()’未定義的參考
/tmp/ccKiwXhb.o:在函式‘Connection::CreatePingTemplate()’中:
Connection.cpp:(.text+0xa60):對‘Aris::Network::CommandBuilder::Ping()’未定義的參考
Connection.cpp:(.text+0xa93):對‘aris::Command::~Command()’未定義的參考
Connection.cpp:(.text+0xaa2):對‘aris::Command::ByteSizeLong() const’未定義的參考
Connection.cpp:(.text+0xaf1):對‘aris::Command::ByteSizeLong() const’未定義的參考
Connection.cpp:(.text+0xb4e):對‘aris::Command::~Command()’未定義的參考
Connection.cpp:(.text+0xb87):對‘aris::Command::~Command()’未定義的參考
/tmp/ccKiwXhb.o:在函式‘Connection::SerializeCommand(aris::Command const&, std::vector<unsigned char, std::allocator<unsigned char> >&)’中:
Connection.cpp:(.text+0xbc7):對‘aris::Command::ByteSizeLong() const’未定義的參考
Connection.cpp:(.text+0xbfc):對‘aris::Command::ByteSizeLong() const’未定義的參考
/tmp/ccKiwXhb.o:在函式‘aris::Command::Command()’中:
Connection.cpp:(.text._ZN4aris7CommandC2Ev[_ZN4aris7CommandC5Ev]+0x19):對‘aris::Command::Command(google::protobuf::Arena*)’未定義的參考
/tmp/ccKiwXhb.o:在函式‘aris::Command::operator=(aris::Command&&)’中:
Connection.cpp:(.text._ZN4aris7CommandaSEOS0_[_ZN4aris7CommandaSEOS0_]+0x4f):對‘aris::Command::InternalSwap(aris::Command*)’未定義的參考
Connection.cpp:(.text._ZN4aris7CommandaSEOS0_[_ZN4aris7CommandaSEOS0_]+0x64):對‘aris::Command::CopyFrom(aris::Command const&)’未定義的參考
/tmp/ccN3PYVn.o:在函式‘_ZZN22WriteableArisRecording10WriteFrameERK5FrameENKUlRT_E_clIK13FileOpContextEEDaS4_’中:
ArisRecording.cpp:(.text+0x43d):對‘Aris::PingModeToNumBeams(unsigned int)’未定義的參考
collect2: 錯誤:ld 回傳 1
makefile:19: recipe for target 'connect' failed
make: *** [connect] Error 1
uj5u.com熱心網友回復:
這個程式本來是在windows10下vs2019中能運行,現在移植到ubuntu16.04,這幾個問題一直解決不掉,哪位大神給點建議?謝謝uj5u.com熱心網友回復:
作業系統不同,提供的類別庫也不同,也就是說在windows能呼叫的函式或api,在ubuntu上不一定能用,要用功能類似的庫函式替換,如果沒有類似的庫函式,要自己去實作。你不會是以為把windows的代碼拿過來就直接能編譯吧?
uj5u.com熱心網友回復:
作業系統不同,提供的類別庫也不同,也就是說在windows能呼叫的函式或api,在ubuntu上不一定能用,要用功能類似的庫函式替換,如果沒有類似的庫函式,要自己去實作。你不會是以為把windows的代碼拿過來就直接能編譯吧?
uj5u.com熱心網友回復:
肯定沒有直接參考,自己不是一邊移植一邊改嗎?問題現在就是不知道怎么改,所以才會在此聚首uj5u.com熱心網友回復:
重裝ARIS Express試試,可能版本也有關系轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/15892.html
標籤:C++ 語言
