如何在不同的静态库中获得函数的声明和定义

时间:2014-01-02 06:23:54

标签: c++ linker inline

我想让这件事发生。在一个静态库中声明一个函数,在另一个静态库中定义它的定义。这是一个例子:

在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中,但这会妨碍编译器的内联可能性。

有解决方法吗?

1 个答案:

答案 0 :(得分:0)

这不起作用,因为声明位于标题中,而定义位于库中。因此,如果您在.h中声明并在.cpp中实施,那么它们已经分开了。