gpt4 book ai didi

c++ - 包含的 C++/C 头文件的实现在哪里?

转载 作者:行者123 更新时间:2023-12-02 06:02:46 30 4
gpt4 key购买 nike

这可能看起来有点愚蠢:)但这已经困扰了一段时间了。当我在我的C++/C程序中包含一些别人编写的头文件时,编译器如何知道头文件中声明的类成员函数的实现在哪里?

假设我想编写一些利用 OpenCV 库的程序。通常我想使用:

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

但是,据我所知,这些只是头文件,仅声明函数但没有实现。那么编译器如何知道去哪里找到实现呢?特别是当我想构建 .so 文件时。

There is a similar post.基本上它说的是第三方库,特别是。商业产品不发布源代码,因此它们随 header 一起提供 lib 文件。但是,它并没有明确编译器如何知道在哪里可以找到 lib 文件。另外,那篇文章中的答案提到,如果我想编译自己的代码,我需要这些头文件的实现的源代码。这是否意味着我无法在没有实现源的情况下构建 .so 文件?

最佳答案

一般来说,实现预编译库的形式分发。您需要告诉编译器它们所在的位置。

例如,对于 gcc,引用 online manual

-llibrary
-l library

Search the library named library when linking. [...]

并且,

-Ldir

Add directory dir to the list of directories to be searched for -l.

<小时/>

注意:您不需要显式指定标准库,它们会自动链接。相反,如果您不希望它们与您的二进制文件链接,则需要通过传递-nostdlib选项来通知编译器。

关于c++ - 包含的 C++/C 头文件的实现在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42578874/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com