软件定义无线电USRP X310的测试程序

时间:2017-04-11 11:20:59

标签: c++ visual-studio-2015 usrp uhd

我想为我的软件定义无线电USRP X310运行第一个测试程序,该程序在公司网站上提供:https://kb.ettus.com/Getting_Started_with_UHD_and_C%2B%2B

我在Windows上使用Visual Studio 2015。我在VS2015中安装,构建和链接了boost和UHD库(UHD版本3.10.1.1和增强版本1.63.0)。

尝试调试程序我收到几条关于“未解析的外部符号”的错误消息。我试图找到问题并最终得到非常基本的代码示例,并注意到函数'uhd :: usrp :: multi_usrp :: make(device_args)'不起作用。另外'uhd :: set_thread_priority_safe()'也不起作用。

在我看来,代码本身不是问题。有谁知道这些错误来自哪里?

我的代码     #include <uhd/utils/safe_main.hpp>

`#include <uhd/usrp/multi_usrp.hpp>`
`#include <uhd/utils/thread_priority.hpp>`
`#include <csignal>`
`#include <iostream>`

int UHD_SAFE_MAIN(int argc, char *argv[]) {
uhd::set_thread_priority_safe();

std::string device_args("addr=192.168.10.2");
uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make(device_args);
return 0;
}

错误消息(我很抱歉他们是德语。我翻译了用括号写的):

Fehler (error)  LNK2019 Verweis auf nicht aufgelöstes externes Symbol (link 
to unresolved external symbol) ""__declspec(dllimport) public: __thiscall 
uhd::device_addr_t::device_addr_t(class std::basic_string<char,struct 
std::char_traits<char>,class std::allocator<char> > const &)" (__imp_??
0device_addr_t@uhd@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?
$allocator@D@2@@std@@@Z)" in Funktion (in function) ""int __cdecl 
_main(int,char * * const)" (?_main@@YAHHQAPAD@Z)".  line 1 

Fehler (error)  LNK2019 Verweis auf nicht aufgelöstes externes Symbol (link             
to unresolved external symbol)  ""__declspec(dllimport) public: __thiscall 
uhd::device_addr_t::~device_addr_t(void)" (__imp_??
1device_addr_t@uhd@@QAE@XZ)" in Funktion (in function) ""int __cdecl 
_main(int,char * * const)" (?_main@@YAHHQAPAD@Z)". line 1

Fehler (error)  LNK2019 Verweis auf nicht aufgelöstes externes Symbol (link 
to unresolved external symbol)  ""__declspec(dllimport) public: static class 
boost::shared_ptr<class uhd::usrp::multi_usrp> __cdecl 
uhd::usrp::multi_usrp::make(class uhd::device_addr_t const &)" (__imp_?
make@multi_usrp@usrp@uhd@@SA?AV?
$shared_ptr@Vmulti_usrp@usrp@uhd@@@boost@@ABVdevice_addr_t@3@@Z)" in 
Funktion (in function)  ""int __cdecl _main(int,char * * const)" (?
_main@@YAHHQAPAD@Z)". line 1

Fehler (error)  LNK2019 Verweis auf nicht aufgelöstes externes Symbol (link 
to unresolved external symbol)""__declspec(dllimport) bool __cdecl 
uhd::set_thread_priority_safe(float,bool)" (__imp_?
set_thread_priority_safe@uhd@@YA_NM_N@Z)" in Funktion ""int __cdecl 
_main(int,char * * const)" (?_main@@YAHHQAPAD@Z)". line 1 

LNK1120 4 nicht aufgelöste Externe (4 unresolved external symbols) line 1

1 个答案:

答案 0 :(得分:0)

如果要在调试模式下构建它,就会出现此问题。您链接的UHD是为发布模式构建的,因此您还必须在发布模式下构建项目。我有同样的问题,现在我正在尝试在调试和发布模式下为VS2015构建UHD,以便能够在调试模式,调试对象和释放模式到发布对象之间进行链接。但是我没有在发布模式下使用此TUT(https://kb.ettus.com/Building_and_Installing_the_USRP_Open_Source_Toolchain_(UHD_and_GNU_Radio)_on_Windows)来构建Debug。我必须寻找这个。如果你能让它发挥作用,如果你能告诉你如何做到这一点会很好(我也是德国人)。 希望这对你有所帮助,即使你的帖子已经有6个月了:D。