Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在不同的静态库中声明和定义函数_C++_Linker_Inline - Fatal编程技术网

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中。