Отсутствует пользовательский интерфейс при запуске OMNeT ++ пример - PullRequest
0 голосов
/ 03 декабря 2018

Я пытался интегрировать один из примеров systemc OMNeT ++ в нашу среду ( SoCRocket ), и после некоторых усилий мне удалось создать один из примеров, но при попытке его запустить я получаю следующую ошибку:

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'
                       ],
    )

1 Ответ

0 голосов
/ 06 декабря 2018

Возможно, компоновщик просто «оптимизирует» библиотеки пользовательского интерфейса.

В каждой библиотеке пользовательского интерфейса есть несколько фиктивных функций, которые называются qtenv_lib, tkenv_lib и cmdenv_lib,именно для того, чтобы дать «дескриптор» для каждой библиотеки.

Попробуйте добавить несколько флагов компоновщика для «принудительного связывания» этих библиотек, «отменив определение» некоторых из этих символов.Что-то вроде параметров --undefined или --require-defined должно сделать это.Стандартный процесс сборки OMNeT ++ также добавляет их по той же причине.Возможно, вам понадобится добавить подчеркивание (_) к имени функции, чтобы получить имя символа.

РЕДАКТИРОВАТЬ:

О, со статическими библиотеками, может быть, выследует использовать --whole-archive вместо.

...