0

使用:

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 进行更新,以解决以下定义的问题: 错误:无法分配抽象类型 '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 库中获取此方法。

4

1 回答 1

0

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

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

1.) 理想情况下,您的前端接口兼容设备还包含基于 bulkIO 的输入或输出端口。通过在您的设备上简单地拥有一个基于 bulkIO 的端口,依赖项将被添加到 configure.ac 并发生正确的链接。

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

-PKG_CHECK_MODULES([INTERFACEDEPS], [frontendInterfaces]) +PKG_CHECK_MODULES([INTERFACEDEPS], [frontendInterfaces, bulkio >= 1.0 bulkioInterfaces >= 1.9])

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

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

于 2013-12-17T12:00:14.920 回答