crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Экспортирование из пространства имен, Линковщик не видит функции
Kagami
  опции профиля:
сообщение 8.5.2009, 15:01
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


Есть небольшая библиотека, которую я хочу сделать разделяемой. У нее вот такой заголовочный файл xml.h:
Раскрывающийся текст
#ifndef XML_H
#define XML_H

#include <QDomDocument>
#include <QStringList>
#include <QFile>
#include <QMessageBox>

#include "xml_global.h"

    /*! \brief Инициализация ресурсов */
    void init();

    /*! \brief Открытие указанного Xml-файла */
    XMLSHARED_EXPORT QDomDocument* openXmlFile(QString fileName);

    /*! \brief Получение списка имен стадий */
    XMLSHARED_EXPORT bool getStagesNames(QStringList &stagesNames);

#endif // XML_H


И еще дополнительный заголовочный файл xml_global.h для импорта/экспорта:
Раскрывающийся текст
#ifndef XML_GLOBAL_H
#define XML_GLOBAL_H

#include <QtCore/qglobal.h>

#if defined(XML_LIBRARY)
#  define XMLSHARED_EXPORT Q_DECL_EXPORT
#else
#  define XMLSHARED_EXPORT Q_DECL_IMPORT
#endif

#endif // XML_GLOBAL_H


Все работало прекрасно, до тех пор пока я не решил поместить все в пространство имен Xml:
Раскрывающийся текст
#ifndef XML_H
#define XML_H

#include <QDomDocument>
#include <QStringList>
#include <QFile>
#include <QMessageBox>

#include "xml_global.h"

namespace Xml {
    /*! \brief Инициализация ресурсов */
    void init();

    /*! \brief Открытие указанного Xml-файла */
    XMLSHARED_EXPORT QDomDocument* openXmlFile(QString fileName);

    /*! \brief Получение списка имен стадий */
    XMLSHARED_EXPORT bool getStagesNames(QStringList &stagesNames);
}

#endif // XML_H


При сборке приложения, использующего эту библиотеку выводится следующее сообщение об ощибке:
Цитата
./debug\reditor.o(.text+0x39c2): In function `ZN7REditor13populateRulesEv':
D:/User/Alex/projects/master/ruleseditor/src/reditor.cpp:129: undefined reference to `_imp___ZN3Xml13getStagesNameER11QStringList'
collect2: ld returned 1 exit status


Кто-нибудь знает как правильно экспортировать функции из простраства имен?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
D_K
  опции профиля:
сообщение 20.5.2009, 11:41
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 20.5.2009
Пользователь №: 761

Спасибо сказали: 3 раз(а)




Репутация:   1  


Библиотека твоя? Или у тебя только заголовочные файлы?
Линковщик, естественно, ругается, так как библиотека была собрана без использования пространств имен, соответственно и имена функций были другими.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.4.2024, 21:03