Try exporting your component:

 

    class HPX_COMPONENT_EXPORT Container

      : public hpx::components::component_base<Container>

    { ... };

 

HTH

Regards Hartmut

---------------

 <http://boost-spirit.com> http://boost-spirit.com

 <http://stellar.cct.lsu.edu> http://stellar.cct.lsu.edu

 

From: [email protected] 
[mailto:[email protected]] On Behalf Of Tim Biedert
Sent: Wednesday, November 16, 2016 8:32 AM
To: [email protected]
Subject: [hpx-users] Undefined symbols: transfer_action(), 
transfer_continuation_action(), get_action_name<>()

 

On macOS with current HPX master I get the following linker errors when 
compiling my project, which works fine on my Arch Linux machine with a couple 
of weeks old HPX.   

 

Undefined symbols for architecture x86_64:

"hpx::actions::transfer_action<server::Container::render_action>::transfer_action()",
 referenced from:

hpx::actions::detail::register_action<server::Container::render_action>::create(bool)
 in Block.cpp.o

hpx::actions::detail::register_action<server::Container::render_action>::create(bool)
 in CommunicationHandler.cpp.o

"hpx::actions::transfer_action<server::Container::loadData_action>::transfer_action()",
 referenced from:

hpx::actions::detail::register_action<server::Container::loadData_action>::create(bool)
 in Block.cpp.o

hpx::actions::detail::register_action<server::Container::loadData_action>::create(bool)
 in CommunicationHandler.cpp.o

"hpx::actions::transfer_action<server::Container::initBlocks_action>::transfer_action()",
 referenced from:

hpx::actions::detail::register_action<server::Container::initBlocks_action>::create(bool)
 in Block.cpp.o

hpx::actions::detail::register_action<server::Container::initBlocks_action>::create(bool)
 in CommunicationHandler.cpp.o

"hpx::actions::transfer_action<server::Container::updateConfig_action>::transfer_action()",
 referenced from:

hpx::actions::detail::register_action<server::Container::updateConfig_action>::create(bool)
 in Block.cpp.o

hpx::actions::detail::register_action<server::Container::updateConfig_action>::create(bool)
 in CommunicationHandler.cpp.o

"hpx::actions::transfer_continuation_action<server::Container::render_action>::transfer_continuation_action()",
 referenced from:

hpx::actions::detail::register_action<server::Container::render_action>::create(bool)
 in Block.cpp.o

hpx::actions::detail::register_action<server::Container::render_action>::create(bool)
 in CommunicationHandler.cpp.o

"hpx::actions::transfer_continuation_action<server::Container::loadData_action>::transfer_continuation_action()",
 referenced from:

hpx::actions::detail::register_action<server::Container::loadData_action>::create(bool)
 in Block.cpp.o

hpx::actions::detail::register_action<server::Container::loadData_action>::create(bool)
 in CommunicationHandler.cpp.o

"hpx::actions::transfer_continuation_action<server::Container::initBlocks_action>::transfer_continuation_action()",
 referenced from:

hpx::actions::detail::register_action<server::Container::initBlocks_action>::create(bool)
 in Block.cpp.o

hpx::actions::detail::register_action<server::Container::initBlocks_action>::create(bool)
 in CommunicationHandler.cpp.o

"hpx::actions::transfer_continuation_action<server::Container::updateConfig_action>::transfer_continuation_action()",
 referenced from:

hpx::actions::detail::register_action<server::Container::updateConfig_action>::create(bool)
 in Block.cpp.o

hpx::actions::detail::register_action<server::Container::updateConfig_action>::create(bool)
 in CommunicationHandler.cpp.o

"char const* 
hpx::actions::detail::get_action_name<server::Container::render_action>()", 
referenced from:

hpx::actions::detail::register_action<server::Container::render_action>::register_action()
 in Block.cpp.o

hpx::actions::detail::register_action<server::Container::render_action>::register_action()
 in CommunicationHandler.cpp.o

"char const* 
hpx::actions::detail::get_action_name<server::Container::loadData_action>()", 
referenced from:

hpx::actions::detail::register_action<server::Container::loadData_action>::register_action()
 in Block.cpp.o

hpx::actions::detail::register_action<server::Container::loadData_action>::register_action()
 in CommunicationHandler.cpp.o

"char const* 
hpx::actions::detail::get_action_name<server::Container::initBlocks_action>()", 
referenced from:

hpx::actions::detail::register_action<server::Container::initBlocks_action>::register_action()
 in Block.cpp.o

hpx::actions::detail::register_action<server::Container::initBlocks_action>::register_action()
 in CommunicationHandler.cpp.o

"char const* 
hpx::actions::detail::get_action_name<server::Container::updateConfig_action>()",
 referenced from:

hpx::actions::detail::register_action<server::Container::updateConfig_action>::register_action()
 in Block.cpp.o

hpx::actions::detail::register_action<server::Container::updateConfig_action>::register_action()
 in CommunicationHandler.cpp.o

ld: symbol(s) not found for architecture x86_64

 

 

Any ideas where this comes from?  

 

 

Some (simplified) code to show how actions are declared/registered:

 

 

 

 

—— Container.h: —— 

 

namespace server

{

class Container : public hpx::components::simple_component_base<Container>

{

public:

    glm::ivec3 loadData(const Config& config);

    HPX_DEFINE_COMPONENT_ACTION(Container, loadData);

 

    // ...

};

 

}

 

HPX_REGISTER_ACTION_DECLARATION(server::Container::loadData_action, 
container_loadData_action);

// similar for other actions

 

 

 

—— Container.cpp: —— 

 

#include "Container.h"

 

HPX_REGISTER_COMPONENT_MODULE();

 

typedef hpx::components::simple_component<server::Container> Container_type;

HPX_REGISTER_COMPONENT(Container_type, Container);

 

HPX_REGISTER_ACTION(Container_type::wrapped_type::loadData_action, 
container_loadData_action);

// similar for other actions

 

 

namespace server

{

    glm::ivec3 Container::loadData(const Config& config)

    {

        // ...

    }

}

 

 

 

 

 

Thanks!

Tim

 

 

_______________________________________________
hpx-users mailing list
[email protected]
https://mail.cct.lsu.edu/mailman/listinfo/hpx-users

Reply via email to