The old code has not been changed, it has been build from scratch.
The compiler/linker warnings I got were all deprecated warnings for
auto_ptr
(because the tracker uses c++0x code. I have to supply the --std=c++0x flag)
The new meta.json:

{
    "components": [
        {
            "name": "discovery" ,
            "library": "discovery" ,
            "dependencies": [
                "link event"
            ]
        },
        {
            "name": "link event" ,
            "library": "link_event"
        }
    ]
}

The output from nm -D discovery.so | grep factory:

         U _ZN5vigil9container17Component_factoryC2Ev
         U _ZN5vigil9container17Component_factoryD2Ev
         U _ZTIN5vigil9container17Component_factoryE

Thanks in advance!

2012/4/19 Murphy McCauley <[email protected]>

> I can't guess without knowing more about what has been changed in the code
> and meta file, so I'm grasping at straws here.
>
> One thing I might suggest is rebuilding your component and looking for
> compile/link warnings.  Or dump the shared object and see if there's an
> exported symbol for the factory function (maybe it has the wrong name
> somehow?).
>
> -- Murphy
>
> On Apr 19, 2012, at 4:29 AM, Sander Vrijders wrote:
>
> The default discovery application is no longer present in the directory.
> I actually am a master student and am developing this for my thesis.
> The new discovery application (written in C++) was supplied to me by my
> thesis supervisor.
> If I would run this application standalone it would work, yet when I
> integrate it with the tracker, it doesn't anymore.
>
> Kind regards
> Sander
>
> 2012/4/19 Murphy McCauley <[email protected]>
>
>> I suspect it's because NOX already comes with a component named
>> "discovery".
>> Try removing or changing the name of the existing one by adjusting its
>> meta file (netapps/discovery/meta.json), or (better yet) renaming yours.
>>
>> -- Murphy
>>
>> On Apr 19, 2012, at 4:18 AM, Sander Vrijders wrote:
>>
>> > Hi
>> >
>> > I'm developing an application for NOX.
>> > The code consists of multiple files, and is a topology discovery merged
>> with a bittorrent tracker.
>> > However, when I run the application (everything compiles fine), I get
>> the following error:
>> >
>> > 'discovery' ran into an error:
>> >                         discovery does not implement
>> discovery_get_factory() nor get_factory() function
>> >
>> > I have added
>> >
>> REGISTER_COMPONENT(vigil::container::Simple_component_factory<Discovery>,
>> Discovery);
>> > to the bottom of my source file discovery.cc, if I add it higher up in
>> the source file, or in another source file,
>> > I mostly get a compiler error that says: get_factory is already defined.
>> > What am I missing here?
>> >
>> > Kind regards
>> > Sander
>>
>>
>
>

Reply via email to