我试图将OMNeT ++ systemc示例之一集成到我们的框架(SoCRocket)中,经过一番努力,我成功构建了其中一个示例,但是当我尝试运行它时,出现以下错误:< / p>
OMNeT++ Discrete Event Simulation (C) 1992-2018 Andras Varga, OpenSim Ltd.
Version: 5.4.1, build: 180629-5e28390, edition: Academic Public License -- NOT FOR COMMERCIAL USE
See the license for distribution terms and warranty disclaimer
<!> Error: No user interface (Cmdenv, Tkenv, etc.) found
End.
只知道,我禁用了共享库选项,并且我已经在发行模式下构建了OMNeT ++。我在/omnet/lib/
中有以下库:
omnet/lib/
├── liboppcmdenv.a
├── liboppcommon.a
├── liboppenvir.a
├── liboppeventlog.a
├── libopplayout.a
├── liboppmain.a
├── liboppnedxml.a
├── liboppqtenv.a
├── liboppqtenv-osg.a
├── liboppscave.a
├── liboppsim.a
└── liboppsystemc.a
缺少什么,有人有主意吗?
用于在框架中构建代码的脚本:
def build(bld):
bld(
target = 'example1.platform',
features = 'cxx cprogram',
source = '/forkjoin/forkjoin.cc SC_Wrapper.cc',
includes = '.',
use = [
'oppsystemc','oppmain','oppenvir','oppsim','oppcommon','oppnedxml','oppcmdenv','oppeventlog','opplayout','oppqtenv','oppqtenv-osg','oppscave','xml2','mpi','mpi_cxx','dl'
],
)
答案 0 :(得分:1)
链接器可能只是简单地“优化了”用户界面库。
每个用户界面库中都有一些伪函数,分别称为qtenv_lib
,tkenv_lib
和cmdenv_lib
,目的是为每个库提供一个“句柄”。
尝试通过“未定义”其中一些符号来添加一些链接器标志,以“强制链接”这些库。应该使用--undefined
或--require-defined
选项之类的方法。出于相同的原因,标准的OMNeT ++构建过程也添加了这些内容。您可能需要在函数名称前添加下划线(_
)才能获得符号名称。
编辑:
哦,对于静态库,也许您应该改用--whole-archive
。