C++ 如果存在';没有实现文件吗?

C++ 如果存在';没有实现文件吗?,c++,compilation,header-files,C++,Compilation,Header Files,我正在看ncmpcpp的源代码,我看到了这个 #include <mpd/client.h> #包括 该文件中包含ncmpcpp使用的函数。但这些只是标题。cpp文件是否也必须存在于某个地方?我在同一个目录中找不到它们。他们在哪里 另外,当包含的内容被包围时,我如何知道在哪里查找?如果是第三方库,则很可能不包含源代码。也不需要。标题中声明的所有符号(将要使用)都应导出到标题附带的.lib文件中 除非您有模板s,它可以是内联的 如果您想自己编译代码,您只需要cpp文件,或者更一般地

我正在看ncmpcpp的源代码,我看到了这个

#include <mpd/client.h>
#包括
该文件中包含ncmpcpp使用的函数。但这些只是标题。cpp文件是否也必须存在于某个地方?我在同一个目录中找不到它们。他们在哪里


另外,当包含的内容被包围时,我如何知道在哪里查找?

如果是第三方库,则很可能不包含源代码。也不需要。标题中声明的所有符号(将要使用)都应导出到标题附带的
.lib
文件中

除非您有
模板
s,它可以是内联的

如果您想自己编译代码,您只需要
cpp
文件,或者更一般地说,只需要实现文件。你不知道。您可以使用只包含头文件和二进制文件的模块

当然,我想到了开源项目的例子,其中通常包括所有文件,但是如果它是商业产品,为什么要发布源代码呢?是什么阻止了竞争对手复制并以新名称转售


没有标准规则告诉您在何处查找由
分隔的头,但普遍的共识是
用于系统头(如
string
iostream
),而
用于自己的头(
myclass.h
)。它只是告诉编译器首先应该在哪里查找。

如果是第三方库,则很可能不包括源代码。也不需要。标题中声明的所有符号(将要使用)都应导出到标题附带的
.lib
文件中

除非您有
模板
s,它可以是内联的

如果您想自己编译代码,您只需要
cpp
文件,或者更一般地说,只需要实现文件。你不知道。您可以使用只包含头文件和二进制文件的模块

当然,我想到了开源项目的例子,其中通常包括所有文件,但是如果它是商业产品,为什么要发布源代码呢?是什么阻止了竞争对手复制并以新名称转售


没有标准规则告诉您在何处查找由
分隔的头,但普遍的共识是
用于系统头(如
string
iostream
),而
用于自己的头(
myclass.h
)。它只是告诉编译器首先要查看的位置。

如果编译器可以链接到源文件库(静态或动态链接),则不需要源文件,这些文件通常是
.a
.lib
文件(尽管很少需要
.def
文件)


有关搜索路径,请参阅MSVC和GCC。

如果编译器可以链接到源文件库(静态或动态链接),则不需要源文件,这些文件通常是
.a
.lib
文件(尽管很少需要
.def
文件)


有关搜索路径,请参阅MSVC和GCC。

这是我从源代码构建的,那么为什么不需要实现文件?@javascriptninja:查找“动态链接”,我是这么说的,它们是构建模块时需要的。这是我从源代码构建的,那么为什么不需要实现文件呢?@javascriptninja:在构建模块时,请查找需要的“动态链接”,这就是我所说的。