Объявление глобальных методов в статической библиотеке c ++

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

library.h

namespace myNamespace{
void fun();
}

library.cpp

#include "library.h"    
void myNamespace::fun(){
    }

Я получаю сообщение об ошибке «Неопределенная ссылка на myNamespace::fun» при попытке подключить библиотеку к другому проекту.

Когда я выполняю реализацию только в файле заголовка, проблемы не возникает. Как правильно организовать структуру библиотеки, чтобы в дальнейшем использовать только заголовочный файл (.h)?


Ответы (2 шт):

Автор решения: Harry

Попробуйте вместо

#include "library.h"    
void myNamespace::fun(){
    }

такой вариант:

#include "library.h"    
namespace myNamespace {
    void fun(){
    }
}

Ну, а там — как обычно: скомпилировать, засунуть объектник в библиотеку, заголовочный файл включать в свою программу, библиотеку — подключать :)

→ Ссылка
Автор решения: Arcady Borisov

Видимо верная структура такова:

library.h

namespace myNamespace{
class myClass{
public:
static void fun();
}
}

librery.cpp

#include "library.h"    
namespace myNamespace {
    void myClass::fun(){
    }
}

Без объявления в классе не обойтись.

→ Ссылка