使用 UHD 库时出现错误 - “错误分配”。
我正在尝试编译一些基本代码以了解有关 UHD 库的更多信息。编译程序后出现错误。
代码:
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;
}
发生错误的部分代码:
//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);
错误:在此处输入图像描述
我在用着:
- 微软 Visual C++ 速成版 2010
- C++ 语言
- 超高清库,Win32_VS2010.exe,003.007.003-release
- 升压库 1_63_0
- 我没有将任何 URSP 设备连接到我的计算机。
我不知道该错误是与 UHD 库还是与 C++ 语言有关。我试图使用不同版本的 Microsoft Visual Studio 和不同版本的 UHD 库(包括最新版本)来编译这个程序。我什至试图在不同的 PC 上编译它,但结果相似,没有中断程序的错误,但我在控制台中收到字符串“错误:分配错误”,程序停止在同一个位置工作。
当我第一次开始编译这个程序时,我没有收到“错误分配错误”(UHD_003.004.000 - 发布)。我收到一条错误消息 - “错误:LookupError: KeyError: No device found for ----->。之后我决定将我的 UHD 库版本升级到较新的版本 (003.007.003),然后开始出现错误的分配错误发生。我试图重新安装以前的版本,但没有帮助。
我试图将device_args 的类型从string更改为uhd::device_addr_t,就像http://files.ettus.com/manual手册中所说的那样,但错误并没有消失。
任何帮助,将不胜感激。