【问题标题】:Compilation error while adding mp-olsr on ns 2.34 (Jiazi YI ns 2.29)在 ns 2.34 (Jiazi YI ns 2.29) 上添加 mp-olsr 时出现编译错误
【发布时间】:2025-12-20 01:25:18
【问题描述】:

我正在尝试将 mp-olsr(ns 2.29) 添加到 ns 2.34 中,但在编译时遇到了一些错误。

源码(甲子乙):http://www.jiaziyi.com/index.php/research-projects/mp-olsr

程序:

$ touch common/packet.cc
$ 制作

结果:

mpolsr/MPOLSR.o:在函数MPOLSR::MPOLSR(int)':
MPOLSR.cc:(.text+0x1457): undefined reference to
Agent::Agent(packet_t)'
mpolsr/MPOLSR.o:在函数MPOLSR::MPOLSR(int)':
MPOLSR.cc:(.text+0x16f1): undefined reference to
Agent::Agent(packet_t)'
collect2: ld 返回 1 个退出状态
make: ** [ns] 错误 1

我可能错过了什么?

【问题讨论】:

    标签: c++ compiler-errors protocols ns2


    【解决方案1】:

    在添加新协议之前,您需要将协议名称添加到 common/packet.h 文件中 之后将您的 xxx.o \ 添加到 Makefile 中,而不是在终端窗口中输入 make 命令..

    你做的不对。

    【讨论】:

    • 我已经这样做了。我已经修改了packet.h和所有需要修改的地方,然后我添加到make xxx.o \
    • error collect2: ld returned 1 exit status 表示您的 c++ 代码中没有错误。错误仅在您的配置中..
    • 我之前实现了另一个协议,我只是按照相同的步骤。有什么不对劲,我就是想不通是哪里出了问题。
    【解决方案2】:

    为了解决我的错误,我在 MPOLSR.cc 中修改了以下内容:

    发件人:

    MPOLSR::MPOLSR(nsaddr_t id) : Agent(PT_MPOLSR),
    hello_timer_(this),
    tc_timer_(this),
    mid_timer_(this) {

    收件人(所有内容都在一行上):

    MPOLSR::MPOLSR(nsaddr_t id) : Agent(PT_MPOLSR), hello_timer_(this),tc_timer_(this), mid_timer_(this) {

    我知道这听起来很傻,但它解决了问题。

    【讨论】: