Ошибка Qt Linker со статической функцией при создании разделяемой библиотеки - PullRequest
0 голосов
/ 14 марта 2012

Согласно инструкции, если у вас есть функция снаружи, вы должны указать это с помощью макроса. Что вы делаете, если это статическая встроенная функция?

Иметь функцию, которая выглядит следующим образом:

#include "d_global.h"

class SHARED_EXPORT_IMPORT FruitType {

public:
    enum type {
        ORANGE = 0;
                    ....
    };

    static const QString toString(const int type); // change something here?
};

#endif

inline const QString FruitType::toString(const int type) {
    switch(type) {
    case ORANGE:
                return "orange";
                ...
}

Когда я пытаюсь использовать его в другом проекте, я получаю следующую ошибку компоновки:

Ошибка 11, ошибка LNK2019: неразрешенный внешний символ "__declspec (dllimport) public: статический класс QString const _ cdecl FruitType :: toString (int)" ( _imp_? ToString @ FruitType @@ SA? BVQString @ @ H @ Z) ссылка на функцию "public: void __thiscall someClass :: someFunction (класс QString const &, класс QString const &, класс QPointer, int)" (? SomeFunction @ SomeClass @@ QAEXABVQString @@ 0V? $ QPointer @ VQIODevice @@@@ H @ Z) * ​​1011 *

Редактировать: Я решил вынуть этот заголовок из общей библиотеки и использовать его вместо файла заголовка. Однако мне бы очень хотелось узнать, как обрабатывать статические функции при создании разделяемых библиотек.

...