我似乎无法在Visual Studio 2013中编译一个非常简单的程序。我的目标是将UHD合并到C ++程序中(UHD Driver and Libraries for Windows)。我下载并安装了Windows UHD软件包。由于库也依赖于Boost,我还下载了相应的Boost库。之后,我在Visual Studio 2013中编写了一个快速测试程序:
#include "stdafx.h"
#include <iostream>
#include <uhd\usrp\multi_usrp.hpp>
#include <uhd\types\device_addr.hpp>
using namespace uhd;
int main(void)
{
device_addr_t hint;
device_addrs_t dev_addrs = device::find(hint);
system("pause");
return 0;
}
如果有人感兴趣,该程序应找到连接到主机PC的任何USRP。我在Visual Studio中定义了适当的包含路径:。
要清楚,我在头文件中包含两个路径:
C:\Program Files (x86)\UHD\include
和C:\Program Files (x86)\boost_1_55_0
和图书馆的一条路径:
C:\Program Files (x86)\UHD\lib
当我编写上述程序时,Visual Studio识别出其他包含文件,将device_addr_t
识别为typedef,并且没有抛出任何错误。但是,当我构建程序时,我收到了这些错误:
Error 3 error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class std::vector<class uhd::device_addr_t,class std::allocator<class uhd::device_addr_t> > __cdecl uhd::device::find(class uhd::device_addr_t const &)" (__imp_?find@device@uhd@@SA?AV?$vector@Vdevice_addr_t@uhd@@V?$allocator@Vdevice_addr_t@uhd@@@std@@@std@@ABVdevice_addr_t@2@@Z) referenced in function _main C:\Users\...\Documents\Visual Studio 2013\Projects\uhd_test\uhd_test\uhd_test.obj uhd_test
Error 2 error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall uhd::device_addr_t::~device_addr_t(void)" (__imp_??1device_addr_t@uhd@@QAE@XZ) referenced in function "public: void * __thiscall uhd::device_addr_t::`scalar deleting destructor'(unsigned int)" (??_Gdevice_addr_t@uhd@@QAEPAXI@Z) C:\Users\...\Documents\Visual Studio 2013\Projects\uhd_test\uhd_test\uhd_test.obj uhd_test
Error 1 error LNK2019: 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) referenced in function _main C:\Users\...\Documents\Visual Studio 2013\Projects\uhd_test\uhd_test\uhd_test.obj uhd_test
Error 4 error LNK1120: 3 unresolved externals C:\Users\...\Documents\Visual Studio 2013\Projects\uhd_test\Debug\uhd_test.exe uhd_test
我之前在其他程序中遇到过这些错误,但我能够相对容易地解决它们;或者我会拼错一个关键的包含,或者模板类会出现问题。但是,在这种情况下,我似乎无法解决问题。
任何建设性的意见将不胜感激。
注意:除了定义库目录路径之外,我还明确添加了UHD库,并且收到了相同的错误。
答案 0 :(得分:4)
我让你的榜样有效。这是我使用的软件版本,因为你在描述中没有提到太多:
以下是您需要在VS2013应用程序中设置的项目配置属性:
C / C ++ - &gt; 一般 - &gt; 其他包含目录
链接器 - &gt; 一般 - &gt; 其他图书馆目录
链接器 - &gt; 输入 - &gt; 其他相关性
我认为最后一步是绊倒你,祝你好运!
答案 1 :(得分:0)
我完全遵循大卫格林所说的话,我最终得到了同样的错误。最终我发现我已经下载了64位UHD,但我使用的是Visual Studio 2013 Express,它是一个32位编译器。为Visual Studio 2013下载32位版本的UHD解决了这个问题。对于遇到此问题的其他人,请仔细检查编译器是否与您安装的UHD版本匹配。