添加自己编写的模块到ns-3中出现undefined reference to问题的解决

添加自己编写的模块到ns-3中出现undefined reference to问题的解决

向ns-3添加一个vanet模块,其中一个例子,在examples目录下, vanet-highway-test.cc

编译的时候,出现问题:

[1634/1751] cxx_link: build/debug/src/vanet/examples/vanet-highway-test_1.o -> build/debug/src/vanet/examples/vanet-highway-test
debug/src/vanet/examples/vanet-highway-test_1.o: In function `Start':
/home/gpf/repos/ns-3-allinone/ns-3-dev/build/../src/vanet/examples/vanet-highway-test.cc:50: undefined reference to `ns3::Highway::Start()'
debug/src/vanet/examples/vanet-highway-test_1.o: In function `Stop':
/home/gpf/repos/ns-3-allinone/ns-3-dev/build/../src/vanet/examples/vanet-highway-test.cc:55: undefined reference to `ns3::Highway::Stop()'
debug/src/vanet/examples/vanet-highway-test_1.o: In function `main':
/home/gpf/repos/ns-3-allinone/ns-3-dev/build/../src/vanet/examples/vanet-highway-test.cc:164: undefined reference to `ns3::Controller::SetHighway(ns3::Ptr<ns3::Highway>)'


这个问题,困扰了我一天多时间,不停地查资料,不停地修改。
因为在 vanet-highway-test.cc 中,已经包含了
#include "ns3/highway.h"
#include "ns3/controller.h"
也就是说,已经包含了ns3::Highway和ns3::Controller这两个类,理论上讲,不存在未定义问题。

后来,不断在网上查询,不断地找方法,终于找到了问题来源。
问题在于examples目录下wscript文件中,没有包含 ns3::Highway和ns3::Controller 所有的模块。

旧wscript为:
def build(bld):
    if not bld.env['ENABLE_EXAMPLES']:
        return;

    obj = bld.create_ns3_program('vanet-highway-test',
        ['core', 'mobility', 'network', 'wifi'])
    obj.source = 'vanet-highway-test.cc'

修改 obj = bld.create_ns3_program 中,添加了 自己编写的组件名 vanet
改正为:
def build(bld):
    if not bld.env['ENABLE_EXAMPLES']:
        return;

    obj = bld.create_ns3_program('vanet-highway-test',
        ['core', 'mobility', 'network', 'wifi', 'vanet'])
    obj.source = 'vanet-highway-test.cc'
 

其中  bld.create_ns3_program为编译程序, vanet-highway-test 为编译后的程序名。  
后面的 core,mobility,network,wifi,vanet为本程序所要信赖的组件。

改正后,问题解决。






  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值