【问题标题】:Import external object files in OMNeT IDE在 OMNeT IDE 中导入外部对象文件
【发布时间】:2021-04-09 02:05:39
【问题描述】:

我有来自另一个项目的预先编写的函数,我想将这些函数包含在我的模拟中。我有这些函数的目标文件(functions.a)和头文件(functions.h)。

在一个普通的 C/C++ 项目中,我可以使用answer 中列出的步骤来导入它们。但是,我的项目是作为 OMNeT++ 项目创建的,似乎 C/C++ Build -> Settings -> GCC C Linker -> Miscellaneous 属性不可用。

有没有办法访问这些属性或在 OMNeT 项目中导入对象文件的其他替代方法?

编辑

我尝试添加

EXTRA_OBJS += -L/home/jacques/omnetpp-6.0pre10/workspace/model1t2/externalObjects/HM4 -lfunctions
CFLAGS += -I/home/jacques/omnetpp-6.0pre10/workspace/model1t2/externalObjects/include

但我收到以下错误

make MODE=release V=1 all 
cd src && make
make[1]: Entering directory '/home/jacques/omnetpp-6.0pre10/workspace/model1t2/src'
Creating executable: ../out/clang-release/src/model1t2
clang++   -fuse-ld=lld -Wl,-rpath,/home/jacques/omnetpp-6.0pre10/lib -Wl,-rpath,/lib -Wl,-rpath,.  -Wl,--export-dynamic -L/home/jacques/omnetpp-6.0pre10/lib -o ../out/clang-release/src/model1t2 ../out/clang-release/src/M1M.o ../out/clang-release/src/M1M_m.o  -L/home/jacques/omnetpp-6.0pre10/workspace/model1t2/externalObjects/HM4 -lfunctions -Wl,--no-as-needed -Wl,--whole-archive  -Wl,--no-whole-archive -loppmain -Wl,-u,_cmdenv_lib -Wl,--no-as-needed -loppcmdenv -loppenvir -Wl,-u,_qtenv_lib -Wl,--no-as-needed -Wl,-rpath-link=/usr/lib/x86_64-linux-gnu -loppqtenv -loppenvir -lopplayout  -loppsim -ldl -lstdc++ 
ld.lld: error: unable to find library -lfunctions
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [Makefile:100: ../out/clang-release/src/model1t2] Error 1
make[1]: Leaving directory '/home/jacques/omnetpp-6.0pre10/workspace/model1t2/src'
make: *** [Makefile:2: all] Error 2
"make MODE=release V=1 all" terminated with exit code 2. Build might be incomplete.

【问题讨论】:

    标签: omnet++


    【解决方案1】:

    OMNeT++ 项目使用 Makefile,因此添加外部库或类需要修改 makefrag。
    你应该去Project | Properties | OMNeT++ | Makemake |选择项目的根目录或src | Options,然后是Custom | Makefrag 并写下以下几行:

    EXTRA_OBJS += -LD:/foo/lib -lfunctions
    CFLAGS += -ID:/foo/include
    

    其中D:/foo/lib 是包含库(例如 libfunctions.a)的 Windows 目录示例,D:/foo/include - 头文件。

    【讨论】:

    • 我按照您列出的步骤操作,但不断收到此错误 ld.lld: error: unable to find library -lfunctions。我用V=1 开启了详细模式,但没有帮助。只是为了确保,我在字段fragment to be inserted into Makefile 中输入了这个?我在自定义下没有makefrag。如果有帮助,我在 Ubuntu 上使用 omnet-6.0pre10
    • 能否在 Makefrag 中显示您的条目以及 libfunctions.a 的路径?
    • 我的 src 文件夹中有以下 markfrag 文件 EXTRA_OBJS += -L/home/jacques/omnetpp-6.0pre10/workspace/model1t2/externalObjects/HM4 -lfunctionsCFLAGS += -I/home/jacques/omnetpp-6.0pre10/workspace/model1t2/externalObjects/inlcude 我的文件 functions.a 在路径 /home/jacques/omnetpp-6.0pre10/workspace/model1t2/externalObjects/HM4/functions.a
    • functions.a 更改为libfunctions.a
    • 我进行了更改并在markfrag 中尝试了-lfunctions-llibfunctions 并得到了同样的错误。
    猜你喜欢
    • 2017-09-27
    • 2018-06-15
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 2017-01-04
    相关资源
    最近更新 更多