Я хотел бы, чтобы это произошло. Уметь объявлять функцию в одной статической библиотеке, а ее определение - в другой. Вот пример:
В LibA.a
// Foo.h
class Foo
{
public:
void Bar() const;
};
В LibB.a
// FooPlatformSpecific.h
inline void Foo::Bar() const
{
}
А затем в LibC.dylib
// Myfile.cpp
#include "Liba/Foo.h"
void useTheFunction()
{
Foo foo;
foo.Bar();
}
Некоторые комментарии мне нужно сделать Bar inline, чтобы он не генерировал повторяющийся символ. Теперь моя проблема в том, что она не связывает это, дает мне неопределенный символ.
Решение состоит в том, чтобы сделать определение бара не встроенным и в cpp LibB.a, но это помешает встроенным возможностям для компилятора.
Есть ли способ обойти это?
Это не сработает, поскольку объявление находится в заголовке, а определение - в библиотеке. Поэтому они уже разделены, если вы объявляете в .h
и реализуете в .cpp
.