Linux环境下动态链接库的生成和使用

Linux环境下动态链接库的生成和使用

使用自己封装的so时遇到了点问题,本着简便原则决定写个demo看看,顺便记录下整个过程。

 

1)生成so所需的文件如下:

print.h

#ifndef __print_h__
#define __print_h__

void print(void);

#endif

print.cpp

#include <stdio.h>
#include "print.h"

void print(void)
{
	printf("hello world.\n");
}

bye.h

#ifndef __bye_h__
#define __bye_h__

void bye(void);

#endif

bye.cpp

#include <stdio.h>
#include "bye.h"

void bye(void)
{
	printf("bye bye.\n");
}

midd.h

#ifndef __midd_h__
#define __midd_h__

class Middleware{
	public:
		Middleware();
		~Middleware();

		bool data(const char *p);
};
#endif

midd.cpp

#include "print.h"
#include "bye.h"
#include "midd.h"
#include <stdio.h>

Middleware::Middleware()
{
	printf("Middleware::Middleware()\n");
}

Middleware::~Middleware()
{
	printf("Middleware::~Middleware()\n");
}

bool Middleware::data(const char *p)
{
	print();
	bye();

	return true;
}

  

2)编译过程

g++ -c -fPIC -shared bye.cpp

g++ -c -fPIC -shared print.cpp

g++ -c -fPIC -shared midd.cpp

 

3)链接过程

g++ -o test.so midd.o print.o bye.o -fPIC -shared

 

4)动态链接库的使用

现在写一个main.cpp来调用so,看看效果

main.cpp

#include "midd.h"
int main()
{
	Middleware middleware;
	middleware.data("xxx");

	return 0;
}

生成可执行文件:

g++ -o test main.cpp ./test.so

测试:

./test

Middleware::Middleware()
hello world.
bye bye.
Middleware::~Middleware()

  

转载于:https://www.cnblogs.com/yangtze736-2013-3-6/p/4670947.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109391.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux的shell中echo改变输出显示样式

    Linux的shell中echo改变输出显示样式

    2021年8月21日
    101
  • hexo史上最全搭建教程[通俗易懂]

    花了几天搭建了个网站,先上链接,欢迎来访:fangzh的个人博客现在市面上的博客很多,如CSDN,博客园,简书等平台,可以直接在上面发表,用户交互做的好,写的文章百度也能搜索的到。缺点是比较不自由,会受到平台的各种限制和恶心的广告。而自己购买域名和服务器,搭建博客的成本实在是太高了,不光是说这些购买成本,单单是花力气去自己搭这么一个网站,还要定期的维护它,对于我们大多数人来说,实在是没…

    2022年4月8日
    222
  • 2021win7激活码-激活码分享

    (2021win7激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsaWNlbnNlSW…

    2022年3月21日
    63
  • 遗传算法_aforge遗传算法

    遗传算法_aforge遗传算法一、遗传算法简介:遗传算法是进化算法的一部分,是一种通过模拟自然进化过程搜索最优解的方法。二、遗传算法思想:遗传算法组成:1.编码2.适应度函数3.遗传算子:选择、交叉、变异4.运行参数借鉴生物进化论,遗传算法将要解决的问题模拟成一个生物进化的过程,通过复制、交叉、突变等操作产生下一代的解,并逐步淘汰掉适应度函数值低的解,增加适应度函数值高的解。这样进化N代后就很有可能会进化出适应度函数值很高的个体。2.1.编码将问题的解编码称字符串形式才能使用遗传算法。最简单的一种编码是二进制编码,即

    2025年8月27日
    8
  • 三台linux ubuntu虚拟机只有一台能上网和连通主机,并且各机器间互相不能ping同「建议收藏」

    三台linux ubuntu虚拟机只有一台能上网和连通主机,并且各机器间互相不能ping同「建议收藏」三台linux ubuntu虚拟机只有一台能上网和连通主机,并且各机器间互相不能ping同

    2022年4月23日
    141
  • tensorflow模块安装

    tensorflow模块安装

    2021年11月19日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号