0

我目前正在为一个非常小的 GNU Radio 应用程序实现一个 GUI 界面。应用程序将简单地连接到 USRP 设备,接收一些 IQ 样本并通过 TCP 套接字转发它们。按照 gqrx 项目文件示例,我能够运行一些示例 gnuradio 块(来自 gr-analog 的拨号音示例)。当我尝试将 UHD/USRP 块包含到项目中时,问题就开始了。基本上,Qt 创建者报告以下错误:

/usr/local/lib/libgnuradio-uhd.so:-1: error: undefined reference to `uhd::usrp::multi_usrp::ALL_MBOARDS

.pro文件配置如下图:

 QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = USRPDialog
TEMPLATE = app


SOURCES += main.cpp \
    usrpdialog.cpp

HEADERS  += \
    usrpdialog.h \
    ui_sdrdialog.h

FORMS += \
    sdrdialog.ui
CONFIG += c++11

CONFIG += link_pkgconfig

PKGCONFIG += gnuradio-analog \
             gnuradio-blocks \
             gnuradio-digital \
             gnuradio-filter \
             gnuradio-fft \
             gnuradio-runtime\
             gnuradio-uhd


LIBS += -lboost_system$$BOOST_SUFFIX -lboost_program_options$$BOOST_SUFFIX -lboost_thread$$BOOST_SUFFIX

LIBS += -luhd -lgnuradio-uhd

这是调用 uhd::usrp_source 对象的函数

void USRPDialog::createFlowgraph()
{
    tb = gr::make_top_block("usrp");
    d_tcpSource = gr::blocks::tcp_server_sink::make(sizeof(gr_complex),"127.0.0.1",d_rxTCPPort,true);
    d_usrpSource = gr::uhd::usrp_source::make(uhd::device_addr_t(ipAddressLineEdit->text().toStdString()),
                                              uhd::stream_args_t("fc32"));
    //Connecting blocks
    tb->connect(d_usrpSource,0,d_tcpSource,0);
    tb->start();
}

UHD 安装在我的系统中(我系统中的 GNU Radio 流程图可以毫无问题地连接到 USRP 设备)。任何人都可以解释为什么会出现这个问题吗?

提前致谢。

4

1 回答 1

0

答案为时已晚,但未来...

我建议您逐步使用此页面:Build UHD from sources

在这些步骤之后,您可以使用所有方法类和 uhd API 在 C/C++ 中构建您的项目。

注意:不要忘记安装 winusb 来检测 usrp 设备。

您可以使用目录中的示例:uhd/host/examples。

您可以使用简单的示例按名称查找(检测 usrp 设备):构建 uhd 后的 uhd_find_devices.exe 等。

于 2020-10-08T12:43:26.293 回答