• 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.
    ");
    }

    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.
    ");
    }

    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()
    ");
    }
    
    Middleware::~Middleware()
    {
    	printf("Middleware::~Middleware()
    ");
    }
    
    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()
    

      

  • 相关阅读:
    项目经理如何管理团队
    正则表达式判断中文字符
    售前工作经验总结
    项目管理知识体系九大知识领域
    项目经理如何调动员工的积极性
    项目经理与客户沟通的宜与忌
    关于CodeSmith生成CSLA代码的联想
    接触CSLA框架的感觉
    C#多线程浅接触二、
    WF工作流开发回顾:介绍
  • 原文地址:https://www.cnblogs.com/yangtze736-2013-3-6/p/4670947.html
Copyright © 2020-2023  润新知