我想让这件事发生。在一个静态库中声明一个函数,在另一个静态库中定义它的定义。这是一个例子:
在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内联,因此它不会生成重复的符号。现在我的问题是它没有链接它给了我一个未定义的符号。
解决方案是使Bar定义不是内联的,而是在LibB.a的cpp中,但这会妨碍编译器的内联可能性。
有解决方法吗?
答案 0 :(得分:0)
这不起作用,因为声明位于标题中,而定义位于库中。因此,如果您在.h
中声明并在.cpp
中实施,那么它们已经分开了。