Linux环境下使用eclipse开发C++动态链接库程序

简介: Linux中也有类似windows中DLL的变成方法,只不过名称不同而已。在Linux中,动态链接叫做Standard Object,生成的动态链接文件为*.so。详细请参考相关文档。 开发环境:Eclipse 3.4.2 G++:4.3.2 1. 创建动态链接库 (1)在Eclipse中创建新的C++工程 File->New->Project->C++->C++ Project,选择Shared Library。

Linux中也有类似windows中DLL的变成方法,只不过名称不同而已。在Linux中,动态链接叫做Standard Object,生成的动态链接文件为*.so。详细请参考相关文档。

开发环境:Eclipse 3.4.2

G++:4.3.2

1. 创建动态链接库

(1)在Eclipse中创建新的C++工程

File->New->Project->C++->C++ Project,选择Shared Library。

(2)创建源代码文件

File->New->Source File,指定名称为shared.cc

(3)编写源码

 

[cpp]  view plain copy
 
  1. /* 
  2.  * Test.cc 
  3.  * 
  4.  *  Created on: Oct 10, 2009 
  5.  *      Author: fify 
  6.  */  
  7. #include <iostream>  
  8. using namespace std;  
  9. void show()  
  10. {  
  11.     cout << "Shared Library." << endl;  
  12. }  

 

编译之后将在工程目录下生成一个libshared.so文件,这就是我们要用的动态链接库文件

2. 调用动态链接库文件

(1)创建C++工程,选择Executable类型工程

(2)添加Source File,并编写源码

 

[cpp]  view plain copy
 
  1. //============================================================================  
  2. // Name        : Import.cpp  
  3. // Author      : Fify  
  4. // Version     :  
  5. // Copyright   : Fify copyleft  
  6. // Description : Hello World in C++, Ansi-style  
  7. //============================================================================  
  8. #include <iostream>  
  9. using namespace std;  
  10. void show();  
  11. int main()  
  12. {  
  13.     show();  
  14.     return 0;  
  15. }  

 

(3)设置导入动态库

Project->Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries

添加Libraries (-l): shared

添加Library search path (-L): {刚才编译生成的*.so文件路径}

(4)编译该项目

3. 运行含动态链接库的程序

点击运行,会出现以下错误:error while loading shared libraries: libShared.so: cannot open shared object file: No such file or directory ,因为系统无法从默认位置找到动态链接库文件。修改系统默认搜索链接库的路径,程序即可顺利执行,输出:

Shared Library.

修改动态库搜索路径的方法有五种,参考:http://www.yuanma.org/data/2007/1212/article_2923.htm ,这里不在详细介绍

目录
相关文章
|
22天前
|
存储 缓存 算法
【C/C++ 性能优化】提高C++程序的缓存命中率以优化性能
【C/C++ 性能优化】提高C++程序的缓存命中率以优化性能
111 0
|
7天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
20 6
|
23天前
|
Linux 编译器 程序员
【Linux 调试秘籍】深入探索 C++:运行时获取堆栈信息和源代码行数的终极指南
【Linux 调试秘籍】深入探索 C++:运行时获取堆栈信息和源代码行数的终极指南
65 0
|
25天前
|
消息中间件 Linux 调度
【Linux 进程/线程状态 】深入理解Linux C++中的进程/线程状态:阻塞,休眠,僵死
【Linux 进程/线程状态 】深入理解Linux C++中的进程/线程状态:阻塞,休眠,僵死
65 0
|
14天前
|
Linux API C语言
FFmpeg开发笔记(一)搭建Linux系统的开发环境
本文指导初学者如何在Linux上搭建FFmpeg开发环境。首先,由于FFmpeg依赖第三方库,可以免去编译源码的复杂过程,直接安装预编译的FFmpeg动态库。推荐网站<https://github.com/BtbN/FFmpeg-Builds/releases>提供适用于不同系统的FFmpeg包。但在安装前,需确保系统有不低于2.22版本的glibc库。详细步骤包括下载glibc-2.23源码,配置、编译和安装。接着,下载Linux版FFmpeg安装包,解压至/usr/local/ffmpeg,并设置环境变量。最后编写和编译简单的C或C++测试程序验证FFmpeg环境是否正确配置。
35 8
FFmpeg开发笔记(一)搭建Linux系统的开发环境
|
23天前
|
监控 Linux 编译器
Linux C++ 定时器任务接口深度解析: 从理论到实践
Linux C++ 定时器任务接口深度解析: 从理论到实践
67 2
|
23天前
|
存储 Linux 程序员
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
69 0
|
23天前
|
存储 算法 Linux
深入理解Linux内存管理brk 和 sbrk 与以及使用C++ list实现内存分配器
深入理解Linux内存管理brk 和 sbrk 与以及使用C++ list实现内存分配器
32 0
|
23天前
|
存储 监控 Linux
Linux 使用getrusage系统调用获取cpu信息:一个C++实例分析
Linux 使用getrusage系统调用获取cpu信息:一个C++实例分析
48 0
|
24天前
|
Unix Linux C++
【C/C++ 造轮子】Linux异步计时器:深入探讨和应用 (Linux Asynchronous Timers: An In-depth Exploration and Application)
【C/C++ 造轮子】Linux异步计时器:深入探讨和应用 (Linux Asynchronous Timers: An In-depth Exploration and Application)
53 1