[ndnSIM] Not being able to build pretty much the same TypeId

Muhammad Hosain Abdollahi Sabet mhasabet at gmail.com
Sun Jun 5 00:49:40 PDT 2016


Alex,

Sure! Here you are:
https://github.com/Mr-Norrell/PlayWithLink

This is for the application which is working:
https://github.com/Mr-Norrell/PlayWithLink/blob/master/extensions/Producer.cpp

And this is for the other one, which is not working:
https://github.com/Mr-Norrell/PlayWithLink/blob/master/extensions/Consumer.cpp

Thanks,
Sabet

On 5/30/16, Alex Afanasyev <aa at cs.ucla.edu> wrote:
> Without seeing actual code, I will not be able to say for sure what's going
> on (you need at least share a small snippet that shows the error).  One
> obvious thing is that you're using the same names as Consumer/Producer app
> in ndnSIM.  Unless you're using a dedicated namespace in your extension,
> this definitely should cause issues.
>
> --
> Alex
>
>> On May 28, 2016, at 1:05 AM, Muhammad Hosain Abdollahi Sabet
>> <mhasabet at gmail.com> wrote:
>>
>> ​Hello everyone,
>>
>> Using http://github.com/cawka/ndnSIM-scenario-template
>> <http://github.com/cawka/ndnSIM-scenario-template>, I'm writing 2 custom
>> applications. In TypeId they are pretty much the same:
>>
>> TypeId
>> Consumer::GetTypeId()
>> {
>>   static TypeId tid = TypeId ("Consumer")
>>           .SetGroupName("Ndn")
>>           .SetParent<ndn::App>()
>>           .AddConstructor<Consumer>()
>>           .AddAttribute("Prefix","Prefix, for which consumer sends
>> interest", StringValue("/"),
>>                         ndn::MakeNameAccessor(&Consumer::m_interestName),
>>                         ndn::MakeNameChecker())
>>           .AddAttribute("Hint","Forwarding Hint Name",
>>                         StringValue("/"),
>>                         MakeStringAccessor(&Consumer::m_linkName),
>>                         MakeStringChecker())
>>           .AddAttribute("HasLink","Does this app use Link?",
>>                         BooleanValue(false),
>>                         MakeBooleanAccessor(&Consumer::m_hasLink),
>>                         MakeBooleanChecker())
>>           .AddAttribute("LifeTime", "Interest Life Time",
>>                         StringValue("2s"),
>>                         MakeTimeAccessor(&Consumer::m_interestLifeTime),
>>                         MakeTimeChecker());
>>
>>   return tid;
>> }
>>
>>
>> And the other one is:
>>
>> TypeId
>> Producer::GetTypeId(){
>>     static TypeId tid = TypeId ("Producer")
>>             .SetGroupName("Ndn")
>>             .SetParent<ndn::App>()
>>             .AddConstructor<Producer>()
>>              .AddAttribute("Prefix", "Prefix, for which producer has the
>> data", StringValue("/"),
>>                           MakeNameAccessor(&Producer::m_prefix),
>>                           ndn::MakeNameChecker())
>>              .AddAttribute("LinkName", "The Name of Forwarding Hint",
>> StringValue("/"),
>>                           MakeNameAccessor(&Producer::m_linkName),
>>                           ndn::MakeNameChecker())
>>              .AddAttribute("PayloadSize", "Virtual payload size for
>> Content packets", UintegerValue(1024),
>>
>> MakeUintegerAccessor(&Producer::m_virtualPayloadSize),
>>                           MakeUintegerChecker<uint32_t>())
>>              .AddAttribute("Freshness", "Freshness of data packets, if 0,
>> then unlimited freshness",
>>                           TimeValue(Seconds(0)),
>> MakeTimeAccessor(&Producer::m_freshness),
>>                           MakeTimeChecker())
>>              .AddAttribute("Signature","Fake signature, 0 valid signature
>> (default), other values application-specific",
>>                           UintegerValue(0),
>>                           MakeUintegerAccessor(&Producer::m_signature),
>>                           MakeUintegerChecker<uint32_t>())
>>              .AddAttribute("KeyLocator","Name to be used for key locator.
>> If root, then key locator is not used",
>>                           ndn::NameValue(),
>>                           MakeNameAccessor(&Producer::m_keyLocator),
>>                           ndn::MakeNameChecker())
>>              .AddAttribute("HasLink","Define if the Producer uses Link",
>>                           BooleanValue(false),
>>                           MakeBooleanAccessor(&Producer::m_hasLink),
>>                           MakeBooleanChecker());
>>             ;
>>     return tid;
>> }
>>
>> ​Producer is ok. But in ​Linking the other one I'm receiving:
>>
>> extensions/Consumer.cpp.1.o: In function
>> `ns3::AccessorHelper<ns3::Consumer,
>> ns3::StringValue>::Set(ns3::ObjectBase*, ns3::AttributeValue const&)
>> const':
>> /usr/local/include/ns3-dev/ns3/attribute-accessor-helper.h:183: undefined
>> reference to `typeinfo for ns3::Consumer'
>> extensions/Consumer.cpp.1.o: In function
>> `ns3::AccessorHelper<ns3::Consumer, ns3::StringValue>::Get(ns3::ObjectBase
>> const*, ns3::AttributeValue&) const':
>> /usr/local/include/ns3-dev/ns3/attribute-accessor-helper.h:209: undefined
>> reference to `typeinfo for ns3::Consumer'
>> extensions/Consumer.cpp.1.o: In function
>> `ns3::AccessorHelper<ns3::Consumer,
>> ns3::ndn::NameValue>::Set(ns3::ObjectBase*, ns3::AttributeValue const&)
>> const':
>> /usr/local/include/ns3-dev/ns3/attribute-accessor-helper.h:183: undefined
>> reference to `typeinfo for ns3::Consumer'
>> extensions/Consumer.cpp.1.o: In function
>> `ns3::AccessorHelper<ns3::Consumer,
>> ns3::ndn::NameValue>::Get(ns3::ObjectBase const*, ns3::AttributeValue&)
>> const':
>> /usr/local/include/ns3-dev/ns3/attribute-accessor-helper.h:209: undefined
>> reference to `typeinfo for ns3::Consumer'
>> extensions/Consumer.cpp.1.o: In function `ns3::TypeId
>> ns3::TypeId::AddConstructor<ns3::Consumer>()::Maker::Create()':
>> /ndnSIM/custom-scenario/link/build/../extensions/Consumer.hpp:22:
>> undefined reference to `vtable for ns3::Consumer'
>> collect2: error: ld returned 1 exit status
>>
>> The .hpps are also pretty much the same. I've copied the ndn-custom-app
>> and modified it.
>>
>> Anyone has and idea what is wrong?
>>
>> Thanks,
>> Sabet
>>
>> _______________________________________________
>> ndnSIM mailing list
>> ndnSIM at lists.cs.ucla.edu
>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim
>
>


-- 
خندان باشید
با تشکر




More information about the ndnSIM mailing list