找不到与UHD(USRP硬件驱动程序)关联的目标文件

时间:2019-04-18 14:18:21

标签: matlab mex

我正在尝试编译一个使用MATLAB中的UHD(USRP硬件驱动程序)实用程序的C ++文件。这与尝试在具有Windows 10 OS的64位系统上使用名为NI-2954R的USRP和MATLAB 2013b有关。

以下是mex命令:

mex -largeArrayDims -v -g rx_samples_to_file.cpp   -I. "C:\Users\VINAYAK KARANDIKAR\Documents\MATLAB\MATLAB\Thesis\MATLAB_USRP_INTERFACE\UHD_sample_programs_from_GitHub\uhd"...
    -I."C:\Users\VINAYAK KARANDIKAR\Documents\MATLAB\MATLAB\Thesis\MATLAB_USRP_INTERFACE\UHD_sample_programs_from_GitHub\boost_1_55_0\boost"...
    -L."C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft"  ...
     uhd.lib  ...
     uhd.lib libmx.lib libmex.lib libmat.lib ...
    "C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft"

我收到以下错误:

LINK : fatal error LNK1181: cannot open input file 'C:\Users\VINAYAK KARANDIKAR\Documents\MATLAB\MATLAB\Thesis\MATLAB_USRP_INTERFACE\UHD_sample_programs_from_GitHub\uhd.obj' 

  C:\PROGRA~1\MATLAB\R2013B\BIN\MEX.PL: Error: Link of 'rx_samples_to_file.mexw64' failed. 

Unable to complete successfully.

Error in make_rx_samples_to_file (line 4)
mex -largeArrayDims -v -g rx_samples_to_file.cpp   -I. "C:\Users\VINAYAK
KARANDIKAR\Documents\MATLAB\MATLAB\Thesis\MATLAB_USRP_INTERFACE\UHD_sample_programs_from_GitHub\uhd

为什么会出现此错误,如何解决该编译问题?

1 个答案:

答案 0 :(得分:0)

您的MEX命令有一些重复的部分,我认为这是由于复制粘贴错误引起的。我会假设您实际使用过:

mex -largeArrayDims -v -g rx_samples_to_file.cpp ...
    -I. "C:\Users\VINAYAK KARANDIKAR\Documents\MATLAB\MATLAB\Thesis\MATLAB_USRP_INTERFACE\UHD_sample_programs_from_GitHub\uhd"...
    -I."C:\Users\VINAYAK KARANDIKAR\Documents\MATLAB\MATLAB\Thesis\MATLAB_USRP_INTERFACE\UHD_sample_programs_from_GitHub\boost_1_55_0\boost"...
    -L."C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft"  ...
     uhd.lib libmx.lib libmex.lib libmat.lib

您有一个参数-I.,指示您要将当前目录(.)添加到编译器的include路径,然后是另一个参数"C:\Users\VINAYAK KARANDIKAR\Documents\MATLAB\MATLAB\Thesis\MATLAB_USRP_INTERFACE\UHD_sample_programs_from_GitHub\uhd",指示您要添加该文件到编译。因此,mex将查找文件uhd.obj,该文件不存在。

解决方案是不要用空格分隔-I参数的两个部分,并且不要在.参数后面添加-I(您也可以在{{ 1}}参数)。这导致:

-L

尽管我对此感到惊讶,但在the documentation to the mex command中您会发现推荐的语法为:

mex -largeArrayDims -v -g rx_samples_to_file.cpp ...
    -I"C:\Users\VINAYAK KARANDIKAR\Documents\MATLAB\MATLAB\Thesis\MATLAB_USRP_INTERFACE\UHD_sample_programs_from_GitHub\uhd" ...
    -I"C:\Users\VINAYAK KARANDIKAR\Documents\MATLAB\MATLAB\Thesis\MATLAB_USRP_INTERFACE\UHD_sample_programs_from_GitHub\boost_1_55_0\boost" ...
    -L"C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft"  ...
     uhd.lib libmx.lib libmex.lib libmat.lib