创建1.9时的链接器错误使用默认情况从IDE创建FrontEnd设备

时间:2013-12-16 21:56:03

标签: redhawksdr

使用:

Redhawk 1.9 / CentOS 6.4(32位)/ C ++实现

创建新的FRONTEND :: TUNER设备

使用代码生成的默认设置。 遵循FRONTEND数字调谐器所需的端口并重新生成代码。

<ports>
  <provides repid="IDL:FRONTEND/DigitalTuner:1.0" providesname="DigitalTuner"/>
  <provides repid="IDL:FRONTEND/RFInfo:1.0" providesname="RFInfo"/>
</ports>

生成代码后,对port_impl.h和port_impl.cpp进行更新,以解决以下问题中定义的问题:     error: cannot allocate an object of abstract type ‘FRONTEND_RFInfo_In_i

对port_impl.h和port_impl.cpp进行更新后重新编译代码。它编译,但我们得到下面的链接器错误。

/usr/local/redhawk/core/lib/libfrontendInterfaces.so: undefined reference to `BULKIO::PrecisionUTCTime::operator<<=(cdrStream&)'

/usr/local/redhawk/core/lib/libfrontendInterfaces.so: undefined reference to `BULKIO::PrecisionUTCTime::operator>>=(cdrStream&) const'

似乎无法在bulkio库中获取此方法。

1 个答案:

答案 0 :(得分:0)

此问题是1.9.0版本中针对具有基于前端接口的端口且没有基于bulkIO的端口的C ++设备的已知错误。它刚刚被发现并已被记录。在基于FrontEnd接口的端口上存在对bulkIO接口的依赖,并且需要将bulkio的链接添加到configure.ac文件(自动生成)。

您可以通过以下两种方式之一解决问题。

1。)理想情况下,符合前端接口的设备还包含基于bulkIO的输入或输出端口。只需在设备上安装基于bulkIO的端口,就会将相关性添加到configure.ac中,并且会发生正确的链接。

2.如果由于某种原因您的设备包含前端接口端口但不包含bulkIO端口,您可以修改项目中找到的configure.ac文件并显式添加依赖项。

-PKG_CHECK_MODULES([INTERFACEDEPS],[frontendInterfaces]) + PKG_CHECK_MODULES([INTERFACEDEPS],[frontendInterfaces,bulkio&gt; = 1.0 bulkioInterfaces&gt; = 1.9])

请注意,当您手动修改configure.ac文件时,默认情况下,当您在IDE中选择“生成代码”时,将不再通过代码生成器生成该文件。如果您继续修改设备并重新生成代码,这可能会导致问题,因为它可能会添加其他依赖项。我的建议是,允许代码生成器通过在选择生成代码时在“重新生成文件”对话框中选择它来重新生成configure.ac文件,然后进行上述编辑。

或者,如果您经常重新生成,可以暂时在设备上放置基于bulkIO的输入或输出端口。通过这样做,您不需要编辑configure.ac文件,直到您完成设备并删除临时bulkio端口。