在PC上编译c++程序与DJI phantom 4 pro通讯

Posted

技术标签:

【中文标题】在PC上编译c++程序与DJI phantom 4 pro通讯【英文标题】:Compile a c++ program on PC to communicate with DJI phantom 4 pro 【发布时间】:2017-12-06 14:43:06 【问题描述】:

我正在尝试在我的 PC(linux mint)上接收来自使用 OpenCV 的 DJI phantom 4 摄像头的流。 我关注的示例是:https://developer.dji.com/guidance-sdk/documentation/tutorials/index.html(我关注的是 linux 部分) 我在 /usr/local/lib 中复制了 Copy libDJI_guidance.so 并检查了一下,它就在那里。 生成文件是:

#define a compiler
CXX     = g++
#define target name
TARGET  = main
#define dependencies of target 
OBJECTS = main.o DJI_utility.o
#define the Include and Library path
CFLAGS  = -g -Wall -I/usr/local/include -I../../../include
LDFLAGS = -Wl,-rpath,./ -lpthread -lrt -L./ -L/usr/local/lib/ -lDJI_guidance -lusb-1.0 `pkg-config --cflags --libs opencv` 

$(TARGET) : $(OBJECTS)
    $(CXX) -o $(TARGET) $(OBJECTS) $(LDFLAGS)
main.o : main.cpp DJI_utility.h
    $(CXX) $(CFLAGS) -c main.cpp DJI_utility.h
DJI_utility.o : DJI_utility.cpp DJI_utility.h
    $(CXX) $(CFLAGS) -c DJI_utility.cpp DJI_utility.h
clean:
    rm -rf *.o *.gch *.avi $(TARGET)

但是当我在命令行中执行 make 时,我得到:

g++ -o main main.o DJI_utility.o -Wl,-rpath,./ -lpthread -lrt -L./ -L/usr/local/lib/ -lDJI_guidance -lusb-1.0 `pkg-config --cflags --libs opencv` 
/usr/bin/ld: skipping incompatible /usr/local/lib//libDJI_guidance.so when searching for -lDJI_guidance
/usr/bin/ld: skipping incompatible /usr/local/lib/libDJI_guidance.so when searching for -lDJI_guidance
/usr/bin/ld: skipping incompatible //usr/local/lib/libDJI_guidance.so when searching for -lDJI_guidance
/usr/bin/ld: cannot find -lDJI_guidance
/usr/bin/ld: cannot find -lusb-1.0
collect2: error: ld returned 1 exit status
Makefile:12: recipe for target 'main' failed
make: *** [main] Error 1

项目位于:

 ~/Documents/studies_SRT/SRT5/TX_drone/Guidance-SDK/demo/guidance_track

ls 的输出是: DJI_guidance.h DJI_utility.cpp DJI_utility.h DJI_utility.h.gch DJI_utility.o main.cpp main.o Makefile

谢谢。

【问题讨论】:

这听起来有点像您为错误的架构下载了库。也许是 32 位与 64 位的问题? 感谢您的回复,是的,这是我检查的库的问题,我使用的是 32 位 .. 不是 64 位。但是我想知道您是如何找到的? 好的,这是一个实际的答案。错误信息似乎很熟悉。我想在某些时候我犯了同样的错误,但不是 100% 确定。 好的,非常感谢 【参考方案1】:

您似乎下载了错误架构的库文件。如果您使用的是 64 位系统,请下载 64 位版本的库。

【讨论】:

以上是关于在PC上编译c++程序与DJI phantom 4 pro通讯的主要内容,如果未能解决你的问题,请参考以下文章

在Windows 10的命令行上编译一个本地C++程序

在 Linux 服务器上编译 C++ 程序时 Intel 编译器的语法

在 64 位机器上编译 tcpsplice

如何在 Android TV 上编译驱动程序?

BFD_RELOC_64:使用 C++ 在 32 位 linux 上编译汇编器指令

ffmpeg在PC上编译问题全解决