当前位置: 首页 > news >正文

编译动态库时只需要知道函数的声明,与可执行文件不同

在编译动态库的时候,不需要知道函数的实现,只需要知道函数的声明就可以。

编译可执行文件的时候,需要知道函数的实现。

文件说明:

hello.h:声明了一个类Hello,只是声明,不是实现

hello.c:类的实现,定义了Hello构造函数和Say函数的实现

lib.c:包含了hello.h头文件,并且创建了Hello,执行了Say函数

main.c:包含了hello.h头文件,并且创建了Hello,执行了Say函数

通过g++ -fPIC -shared -o libhello.so lib.c编译动态库,可以编译成功,编译过程并不会去找构造函数Hello和Say函数的实现。
通过g++ main.c编译可执行文件就会报错,提示找不到Hello和Say的实现。

hello.h

class Hello {
public:Hello(int const &data);void Say();int data_;
};

hello.c

#include <iostream>
#include <string>
#include "hello.h"Hello::Hello(int const &data) {data_ = data;
}void Hello::Say() {std::cout << "data " << data_ << std::endl;
}

lib.c

#include "hello.h"void Do() {Hello hello{10};hello.Say();return;
}

main.c

#include <istream>
#include <string>
#include "hello.h"int main() {Hello hello{10};hello.Say();return 0;
}

http://www.dtcms.com/a/615143.html

相关文章:

  • 【OpenGL】CMake报错解决:Error in configuration process,project files may be invalid.
  • AI有利也有坏
  • 网站 备案规定付费推广
  • 慈溪网站开发厦门最新通告
  • GAMES101-现代计算机图形学入门(六)——Cameras、Lenses、Light Fields、Color and Perception
  • OpenAI Assistant API详解
  • 网站建设费用选网络专业wordpress 自定义登陆页面
  • Matplotlib 绘制多图
  • js获取网站广告点击量怎么做在百度怎么免费发布广告
  • 做网站怎么选空间国内知名设计网站
  • 惠州app网站建设排行榜搜索量最高的网站
  • 【STM32】SPI通讯协议入门解析
  • 网站开发邮件服务器版式设计
  • 做维修家具广告在哪个网站好线上营销策略都有哪些
  • 《DevC++支持C++11等与其软件分辨率低的解决办法》
  • YOLO数据集标签数量统计脚本
  • 设计手机网站公司网站游戏网站怎么建设
  • 网站跳出率计算网站开发技术服务费
  • 【概念科普】ACT技术全景解析:跨领域定义与核心价值
  • AUTOSAR_CP_OS-Protection Error Handling:保护错误处理
  • 网站信息内容建设实施办法西安的网站制作公司
  • ollydbg快捷键
  • 企业网站推广方案相册制作模板
  • 石家庄科技中心网站注册完域名 如何做网站
  • 正保建设教育网站网站空间每年继费到哪交
  • 网络公司网站赏析网络建站步骤
  • [Powershell 入门教程]】第5天内容:远程管理(WinRM、SSH)、PSSession 与 CIM/WMI
  • 知名做漫画网站网站设计制作ihanshi
  • 解释型语言与编译型语言的区别与特点 | 深入了解两者的优势和应用领域
  • 【Java 开发日记】SQL 语句左连接右连接内连接如何使用,区别是什么?