Странное предупреждение с лд - PullRequest
4 голосов
/ 16 октября 2011

Я получил это предупреждение от ld, когда я создавал свою программу:

ld: warning: прямой доступ в глобальных конструкторах с ключом _ZN12_GLOBAL__N_143ensure_log_is_created_before_maing_l_filterEto глобальный слабый символ vtable для cs::ObjectFactoryAliasInstantiation<cs::DefaultCommandDispatcher> означаетслабый символ не может быть переопределен во время выполнения.Вероятно, это было вызвано тем, что различные блоки перевода были скомпилированы с разными настройками видимости.

Код, ссылающийся на ошибку, выглядит так:

class ObjectFactory {
        public :
        ObjectFactory(const char *alias):sAlias(alias){};
        std::string sAlias;
        virtual void* createInstance() = 0;
    };

template <class T>
class ObjectFactoryAliasInstantiation : public ObjectFactory{
public:
    ObjectFactoryAliasInstantiation(const char *alias):ObjectFactory(alias){};
    void* createInstance() { return (void*)new T(&sAlias); };
};`

и это:

        /*
         Class for register the dispatcher for the command
         */
    class CommandDispatcherRegister {  
    public:
        CommandDispatcherRegister(ObjectFactory *commandFactory);
    };

    /*
     Macro for help the Command Dispatcher classes registration
     */
#define REGISTER_AND_DEFINE_COMMAND_DISPATCHER_CLASS(CMD_CLASS_NAME)  class CMD_CLASS_NAME;\
static const CommandDispatcherRegister CMD_CLASS_NAME ## CommandDispatcherRegister(new ObjectFactoryAliasInstantiation<CMD_CLASS_NAME>(#CMD_CLASS_NAME));\
class CMD_CLASS_NAME : public CommandDispatcher\

конец это:

 REGISTER_AND_DEFINE_COMMAND_DISPATCHER_CLASS(DefaultCommandDispatcher) {
        bool deinitialized;

1 Ответ

0 голосов
/ 16 октября 2011

Вероятно, это было вызвано тем, что разные блоки перевода были скомпилированы с разными настройками видимости.

, то есть вы изменили несколько заголовков и не сделали полную повторную сборку всего проекта.Сделай это сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...