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


Attachment: smime.p7s
Description: S/MIME cryptographic signature

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

Reply via email to