Согласно инструкции, если у вас есть функция снаружи, вы должны указать это с помощью макроса. Что вы делаете, если это статическая встроенная функция?
Иметь функцию, которая выглядит следующим образом:
#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 *
Редактировать: Я решил вынуть этот заголовок из общей библиотеки и использовать его вместо файла заголовка. Однако мне бы очень хотелось узнать, как обрабатывать статические функции при создании разделяемых библиотек.