- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我一直在尝试编译以下网站中给出的代码来创建一个 USRP 对象 https://kb.ettus.com/Getting_Started_with_UHD_and_C%2B%2B
对于懒惰的病人,只需包含代码:
#include <uhd/utils/thread_priority.hpp>
#include <uhd/utils/safe_main.hpp>
#include <uhd/usrp/multi_usrp.hpp>
#include <uhd/exception.hpp>
#include <uhd/types/tune_request.hpp>
#include <boost/program_options.hpp>
#include <boost/format.hpp>
#include <boost/thread.hpp>
#include <iostream>
int UHD_SAFE_MAIN(int argc, char *argv[]) {
uhd::set_thread_priority_safe();
std::string device_args("addr=192.168.10.2");
std::string subdev("A:0");
std::string ant("TX/RX");
std::string ref("internal");
double rate(1e6);
double freq(915e6);
double gain(10);
double bw(1e6);
//create a usrp device
std::cout << std::endl;
std::cout << boost::format("Creating the usrp device with: %s...") % device_args << std::endl;
uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make(device_args);
// Lock mboard clocks
std::cout << boost::format("Lock mboard clocks: %f") % ref << std::endl;
usrp->set_clock_source(ref);
//always select the subdevice first, the channel mapping affects the other settings
std::cout << boost::format("subdev set to: %f") % subdev << std::endl;
usrp->set_rx_subdev_spec(subdev);
std::cout << boost::format("Using Device: %s") % usrp->get_pp_string() << std::endl;
//set the sample rate
if (rate <= 0.0) {
std::cerr << "Please specify a valid sample rate" << std::endl;
return ~0;
}
// set sample rate
std::cout << boost::format("Setting RX Rate: %f Msps...") % (rate / 1e6) << std::endl;
usrp->set_rx_rate(rate);
std::cout << boost::format("Actual RX Rate: %f Msps...") % (usrp->get_rx_rate() / 1e6) << std::endl << std::endl;
// set freq
std::cout << boost::format("Setting RX Freq: %f MHz...") % (freq / 1e6) << std::endl;
uhd::tune_request_t tune_request(freq);
usrp->set_rx_freq(tune_request);
std::cout << boost::format("Actual RX Freq: %f MHz...") % (usrp->get_rx_freq() / 1e6) << std::endl << std::endl;
// set the rf gain
std::cout << boost::format("Setting RX Gain: %f dB...") % gain << std::endl;
usrp->set_rx_gain(gain);
std::cout << boost::format("Actual RX Gain: %f dB...") % usrp->get_rx_gain() << std::endl << std::endl;
// set the IF filter bandwidth
std::cout << boost::format("Setting RX Bandwidth: %f MHz...") % (bw / 1e6) << std::endl;
usrp->set_rx_bandwidth(bw);
std::cout << boost::format("Actual RX Bandwidth: %f MHz...") % (usrp->get_rx_bandwidth() / 1e6) << std::endl << std::endl;
// set the antenna
std::cout << boost::format("Setting RX Antenna: %s") % ant << std::endl;
usrp->set_rx_antenna(ant);
std::cout << boost::format("Actual RX Antenna: %s") % usrp->get_rx_antenna() << std::endl << std::endl;
return EXIT_SUCCESS;
}
我起初是通过代码块使用 GCC 编译器,然后决定使用 MinGW 测试 gcc 和 g++ 通过命令行,在编译时都产生了这样的结果:
main.cpp:17: undefined reference to `_imp___ZN3uhd24set_thread_priority_safeEfb'
main.cpp:32: undefined reference to `_imp___ZN3uhd13device_addr_tC1ERKSs'
main.cpp:32: undefined reference to `_imp___ZN3uhd4usrp10multi_usrp4makeERKNS_13device_addr_tE'
main.cpp:40: undefined reference to `_imp___ZN3uhd4usrp13subdev_spec_tC1ERKSs'
main.cpp:56: undefined reference to `_imp___ZN3uhd14tune_request_tC1Ed'
obj\Debug\main.o: In function `ZN3uhd4usrp10multi_usrp11set_rx_gainEdj':
multi_usrp.hpp:595: undefined reference to `_imp___ZN3uhd4usrp10multi_usrp9ALL_GAINSE'
obj\Debug\main.o: In function `ZN3uhd4usrp10multi_usrp11get_rx_gainEj':
multi_usrp.hpp:637: undefined reference to `_imp___ZN3uhd4usrp10multi_usrp9ALL_GAINSE'
collect2.exe: error: ld returned 1 exit status
我阅读了有关将 lib 文件链接到项目的信息,但我下载的 API 似乎没有任何 .lib、.a 或任何其他 lib 类型的文件。我是从他们的网站下载的,http://files.ettus.com/manual/page_install.html .
任何形式的帮助都将不胜感激,几个小时以来我一直在努力找出问题所在。请注意,我在 Windows 10 操作系统上工作。
最佳答案
这些都是简单的链接器错误,说,嘿,你必须添加链接器库。
我不知道您确切地下载了什么,但 Windows 安装程序应该带有在 Windows 下进行链接所必需的 .lib 和 .dll。否则,如果您下载了源代码,则必须按照手册在 Windows 上构建 UHD,并将生成的库添加到您的链接列表中。
关于c++ - 未定义引用 [USRP] [UHD],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42409091/
我一直在尝试编译以下网站中给出的代码来创建一个 USRP 对象 https://kb.ettus.com/Getting_Started_with_UHD_and_C%2B%2B 对于懒惰的病人,只需
根据好的答案更新: 资源: Prores HQ 4:2:2 10bit 4kp25 记录:2020 这是我现在的语法: ffmpeg -pix_fmt yuv422p10 -i JUNGLES_PLU
我正在与 Redhawk 合作,试图通过 redhawk 构建一个设备来运行 USRP x310 作为接收器。我正在尝试使用来自 https://github.com/RedhawkSDR/USRP_
我在 Windows 10 上使用 SDL2 创建 OpenGL 上下文,但是当我尝试在 Intel UHD 630 上获取帧缓冲区附件颜色编码时,我收到了无效操作错误。在我的 Nvidia Gefo
我在 gnuradio companion (grc) 中创建了一个 bpsk 流程图,它工作正常。目前,我正在使用 gnuradio 类编写与同一程序等效的 C++。首先,我从一个文件中读取 I/Q
我正在尝试检测设备何时能够以 4K UHD (3840x2160) 分辨率输出。许多设备(例如 nVidia Shield TV 和 Sony Xperia Z5 Premium)将报告它们以 108
4K 设备越来越受欢迎。我正在开发一个网站,我有一部带有超高清显示屏的手机。我注意到图像很模糊。我立即想到会不会是 4K 的事实。通过如下例所示将图像大小加倍,我发现它不再模糊了。 4K/超高清:
我似乎无法在 Visual Studio 2013 中编译一个非常简单的程序。我的目标是将 UHD 合并到 C++ 程序中 (UHD Driver and Libraries for Windows)
我正在我的服务器上测试 FFMPEG。我正在尝试将 H265 10 位转码为 H264 8 位,以支持在所有主要网络浏览器上播放视频。 1 .这是第一个命令: ffmpeg -i 4K.ts -c:a
以防我购买带有集成英特尔® UHD 显卡 620 的 Thinkpad 并在其下安装 Ubuntu Linux 和 TensorFlow。然后,稍后我添加带有 Nvidia GPU 的 eGPU。我应
我目前有一个程序一直在使用我的 Nvidia GPU 运行。 我想在旁边运行另一个,它将使用 OpenCV 和 OpenCL。 我使用 Ubuntu 18.04,我的处理器是 Intel i7-975
我是一名优秀的程序员,十分优秀!