zoukankan      html  css  js  c++  java
  • 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()
    

      

  • 相关阅读:
    java——spring中bean的作用域
    java——线程池
    java—如何解决缓存穿透
    java—锁的学习研究
    java--springmvc
    java—多线程—notify/notifyAll
    php 基础复习 2018-06-18
    php 基础复习 2018-06-19
    php 以单下划线或双下划线开头的命名
    mysql 常用sql语句
  • 原文地址:https://www.cnblogs.com/yangtze736-2013-3-6/p/4670947.html
Copyright © 2011-2022 走看看