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

2023-12-28

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

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

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

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

有一个类似的帖子。 https://stackoverflow.com/questions/9687541/including-header-files-when-theres-no-implementation-file基本上它说的是第三方库,特别是。商业产品不发布源代码,因此它们随标头一起提供 lib 文件。但是,它并没有明确编译器如何知道在哪里可以找到 lib 文件。另外,那篇文章中的答案提到,如果我想编译自己的代码,我需要这些头文件的实现的源代码。这是否意味着我无法在没有实现源的情况下构建 .so 文件?


一般来说,执行分布为以下形式预编译图书馆。您需要告诉编译器它们所在的位置。

例如,对于gcc,引用在线手册 https://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html

-llibrary
-l library

搜索名为的库library链接时。 [...]

and,

-Ldir

添加目录dir到要搜索的目录列表-l.


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

包含的 C++/C 头文件的实现在哪里? 的相关文章

随机推荐

  • 如何将模型路由名称项传递给 ember.js 模板中的 linkTo

    如何动态地将路由名称传递给 link To 例如 给定以下代码 App Router map function this resource anon path main function this route home path home
  • Djangosyncdb 没有为我的应用程序制作表格

    以前可以用 现在不行了 python manage py syncdb不再为我的应用程序制作表格 From 设置 py INSTALLED APPS django contrib auth django contrib contenttyp
  • 使用 Core Data 高效显示 100,000 个项目

    我正在使用 NSFetchResultsController 在 UITableView 中显示 100 000 多条记录 这可以工作 但速度很慢 尤其是在 iPad 1 上 加载可能需要 7 秒 这对我的用户来说是一种折磨 我还希望能够使
  • 在 ASP.NET 中获取服务器的 IP 地址?

    如何获取调用我的 ASP NET 页面的服务器的 IP 地址 我看过有关 Response 对象的内容 但对 c 很陌生 万分感谢 这应该有效 this gets the ip address of the server pc public
  • 如何优雅地处理 Ajax 调用的登录过期?

    我的 Web 应用程序由大量对服务器端的 Ajax 调用组成RESTful APIs 每次客户登录我的网站时 登录页面都会显示JWT JSON Web Token 来自服务器的令牌并将其存储为cookie在客户端 我选择将其存储为 cook
  • 使用 html 表单输入创建静态 html 页面

    我有一个 html 表单 它调用一个 php 文件 索引 html gt
  • iPhone 上的 pageshow 事件仅触发一次

    我正在尝试使用pageshowSafari iPhone 上的事件修复了后退按钮缓存的一些问题 但使用后退按钮时似乎只能工作一次 我在页面上有这个处理程序A window addEventListener pageshow function
  • R - sort() 输出缺少一行

    I have A and B如下 编辑 我很困而且很困惑 这些不是数据框 gt length A 1 490 gt length B 1 17730 gt str A num 1 490 0 0113 0 0106 0 2308 0 043
  • 将页面移动到 WordPress 中的子目录

    我有一个用 WordPress 制作的主页设置 所有页面都在根目录中 www example com 是否可以将我的某些页面移动到子目录中 like www example com products 根目录保持不变非常重要 这是简单的方法
  • 如何在 zend 框架视图中使用 $this->_() ?

    在我的 ZF 1 11 应用程序中 我将翻译器存储在注册表中 如下所示 Zend Registry set Zend Translate translator 因此 在我的视图脚本中 我可以通过以下方式访问翻译器 this gt trans
  • 使用 Python 复制 SAS 的第一个和最后一个功能

    我最近迁移到 Python 作为我的主要分析工具 并且我希望能够复制第一个工具 最后的 SAS 中的功能 SAS 代码如下 data data out set data in if first ID then flag 1 if last
  • ActiveMQ - 是否可以在 CLIENT_ACKNOWLEDGE 模式下确认单个消息

    根据http docs oracle com javaee 6 api javax jms Message html acknowledge http docs oracle com javaee 6 api javax jms Messa
  • 适用于 Android 的 Flurry 错误报告

    有没有人使用 Flurry 生成未捕获异常的报告 可以发布一些有关如何执行此操作的示例代码 我没有看到任何通过 Flurry 本身的示例 尽管我已经看到了自定义异常报告器的代码示例 但我还没有看到如何仅使用 Flurry 实现基本错误报告的
  • 我需要帮助使用 dataweave 以 xml 格式输出“大于”和“小于”字符

    我有以下数据编织代码 dw 2 0 output xml writeDeclaration false a b lt 当前输出是
  • 添加具有默认值的新列,而不是现有行

    alter table report add favourite film VARCHAR2 100 DEFAULT Star Wars 这会添加一个具有默认值的新列 但在我看来 它还会在所有预先存在的行上设置默认值 而不是将它们保留为空
  • 在iPhone中绘制空心圆

    i need to draw the following image 灰色部分是我想在另一张图像上绘制的内容 我需要使用 CGContext 方法使用的代码是什么 我尝试使用 CGContextAddArc 但失败了 因为当我填充笔划时 中
  • TestWatcher 和 TestNG

    All 我使用 JUnit 和 TestWatcher 以及 Selenium Java 在失败和成功时使用 TestWatcher 我调用错误跟踪工具 API 来锁定测试用例和缺陷 我现在想要生成 Selenium 测试运行的报告并锁定测
  • 如何在 VBA 中格式化文本/字符串?

    在下面的代码中 我采用一些输入参数 文本或单元格 并使用我需要的格式将它们组合起来形成一个字符串 我需要将 Task Name 以及 Lead 等文本设为粗体 我知道你不能将文本设置为粗体 但我该怎么做呢 我存储值的这个单元格最终会在 Wo
  • 如何确定远程通道是否已注册

    在我的 ASP NET 应用程序中 全局应用程序启动事件中有一行通过调用 Remoting Configuration Configure 来配置客户端远程处理通道 这第一次运行良好 但是当我的 Web 应用程序被回收时 应用程序启动事件再
  • 包含的 C++/C 头文件的实现在哪里?

    这可能看起来有点愚蠢 但这已经困扰了一段时间了 当我在我的C C程序中包含一些别人编写的头文件时 编译器如何知道头文件中声明的类成员函数的实现在哪里 假设我想编写一些利用 OpenCV 库的程序 通常我想使用 include