C++ 如何在不同的静态库中声明和定义函数
我想让这一切发生。在一个静态库中声明函数,在另一个静态库中声明函数的定义。以下是一个例子: 在利巴C++ 如何在不同的静态库中声明和定义函数,c++,linker,inline,C++,Linker,Inline,我想让这一切发生。在一个静态库中声明函数,在另一个静态库中声明函数的定义。以下是一个例子: 在利巴 // 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.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定义不内联,并在LibB.A的cpp中,但这将阻碍编译器内联的可能性
有办法解决这个问题吗?这是行不通的,因为声明位于标题中,而定义位于库中。因此,如果您在
.h
中声明并在.cpp
中实现,那么它们已经分开了。您不太理解“使条形图内联以避免生成重复符号”。如果您真的希望函数内联,那么还需要将实现放在同一CU中。