Я хочу запустить первую тестовую программу для своего радиоустройства USRP X310, которое указано на веб-сайте компании: https://kb.ettus.com/Getting_Started_with_UHD_and_C%2B%2B
Я работаю с Visual Studio 2015 на Windows. Я установил, собрал и подключил в VS2015 библиотеки boost и UHD (версия UHD 3.10.1.1 и версия boost 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
эта проблема возникает, если вы хотите собрать ее в режиме отладки. UHD, на который вы ссылаетесь, предназначен для Release-Mode, поэтому вы должны также построить свой проект в Release-Mode. У меня была та же проблема, и теперь я пытаюсь построить UHD для VS2015 в режиме отладки и выпуска, чтобы иметь возможность связывать в режиме отладки, с объектами отладки и в режиме выпуска с объектами выпуска. Но я не получаю его в Debug, ни в Release-Mode с этим TUT (https://kb.ettus.com/Building_and_Installing_the_USRP_Open_Source_Toolchain_(UHD_and_GNU_Radio)_on_Windows). Я должен искать это. Если вы заставите его работать, было бы хорошо, если бы вы могли рассказать, как вы это сделали (я тоже немец).
Надеюсь, это поможет вам, даже вашему посту 6 месяцев: D.
Других решений пока нет …