【C】——动态库中函数的作用范围
如何生成动态库 net小伙 已经在此文中说明——【C】——如何生成静态库和动态库;接下来就要看看动态库中函数的作用范围;
首先我们使用命令 gcc -fPIC -shared -o libtest.so test.c 生成一个动态库 —— libtest.so。 test.c 代码如下(一个很简单的输出函数):
#include <stdio.h>
#include <string.h>
void test(void){
printf("the test is the shared lib\n");
}
然后编写两个文件 hello.c main.c 分别如下:
#include <stdio.h>
#include <stdlib.h>
void test(void){
printf("hello this is test\n");
}
#include <stdio.h>
#include <stdlib.h> int main(int argc, char *argv[]){
test();
return ;
}
使用命令 gcc main.c hello.c -ltest -L=./testlib/ 编译生成 a.out 可执行文件。
./a.out 执行程序显示结果如下:[执行程序之前必须使用 export LD_LIBRARY_PATH=libtest.so 所在目录]
the test is the shared lib
可见程序优先执行 hello.c 中的 test 函数。
如果使用 gcc main.c -ltest -L=./testlib/ 编译生成 a.out ,然后执行 ./a.out 结果如下:the test is the shared lib;
【C】——动态库中函数的作用范围的更多相关文章
- Golang调用windows下的dll动态库中的函数
Golang调用windows下的dll动态库中的函数 使用syscall调用. package main import ( "fmt" "syscall" & ...
- Golang调用windows下的dll动态库中的函数 Golang 编译成 DLL 文件
Golang调用windows下的dll动态库中的函数 package main import ( "fmt" "syscall" "time&quo ...
- C++ 动态库导出函数名“乱码”及解决
C++ 动态库导出函数名“乱码”及解决 刚接触C++,在尝试从 dll 中导出函数时,发现导出的函数名都“乱码”了. 导出过程如下: 新建一个Win32项目: 新建的解决方案里有几个导出的示例: // ...
- Lib作为“静态库”与“动态库”中的区别
Lib作为“静态库”与“动态库”中的区别 0. 前言: 什么是静态连接库: 静态库在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中.因此对应的链接方式称为静态链接. 为什么 ...
- 动态库中的soname
soname( Short for shared object name) 其是应用程序加载dll 时候,其寻找共享库用的文件名.其格式为 lib + math+.so + ( major versi ...
- 【图文】[新手]C++ 动态库导出函数名“乱码”及解决
刚接触C++,在尝试从 dll 中导出函数时,发现导出的函数名都"乱码"了. 导出过程如下: 新建一个Win32项目: 新建的解决方案里有几个导出的示例: // 下列 ifdef ...
- C++调用动态库中的虚基类成员函数时总是进错函数
原创文章,转载请注明作者与本文原始URL. 问题描述:最近遇到这样一个问题,在调用C++的一个成员函数时,总是进错函数.在调用 pMsg->GetMsgContent() 的时候,总是进入到 p ...
- c++动态库中使用命名空间的问题
这是C++才会有的语言特性. 假如你使用一个程序库,他里面有桓霰淞拷衋bc,可是你自己也不小心定义了一个叫abc的变量,这样就会引起重定义错误.所以为了避免这样的现象,C++引入了名字空间(names ...
- GCC链接库的一个坑:动态库存在却提示未定义动态库的函数
背景 在GCC中已经指定链接库,然而编译时却提示动态库函数未定义! 测试出现的错误提示如下: [GMPY@13:48 tmp]$gcc -o test -L. -lmylib test.c /tmp/ ...
随机推荐
- nginx 配置支持URL HTML5 History 模式 与 设置代理
拾人牙慧:https://segmentfault.com/q/1010000007140360 nginx 配置支持URL HTML5 History 模式 location / { try_fil ...
- go包管理工具glide
一.命令 安装 $ go get github.com/Masterminds/glide $ go install github.com/Masterminds/glide 初始化项目并在当前项目下 ...
- flowable 的ProcessEngine配置
1 flowable process engine 是通过 flowable.cfg.xml 配置文件配置的.在spring 环境中是使用 flowable-context.xml 配置文件的, P ...
- Vue 中组件概念
1 为了能在模板中使用,组件必须先注册以便 Vue 能够识别.这里有两种组件的注册类型:全局注册和局部注册. 1.1 全局注册是通过Vue.component 来向Vue注册,例子 Vue.compo ...
- 增加nginx虚拟主机配置文件(conf.d)
有时候我们按照了nginx后发现配置文件只有一个,/etc/nginx/nginx.conf 所有的配置包括虚拟目录也在此文件中配置, 这样当虚拟主机多了管理就有些不方便了, 这是需要我们把配置文件拆 ...
- Go 源码学习之--net/http
其实自己不是很会看源码,但是学习优秀的源码是提升自己代码能力的一种方式,也可以对自己以后写代码有一个很好的影响,所以决定在之后的时间内,要有一个很好的习惯,阅读优秀的源码.刚开始自己会觉得看源码很痛苦 ...
- Atitit mybatis 3 3.2 3.3 3.4 新特性attilax总结
Atitit mybatis 3 3.2 3.3 3.4 新特性attilax总结 1.1. iBATIS 3 内的新特性.html1 1.2. MyBatis团队于2013年2月21日正式发布 M ...
- 【Unity】12.2 导航网格寻路简单示例
开发环境:Win10.Unity5.3.4.C#.VS2015 创建日期:2016-05-09 一.简介 本节通过一个简单例子,演示如何利用静态对象实现导航网格,并让某个动态物体利用导航网格自动寻路, ...
- UVa 10697 - Firemen barracks
题目:已知三点.求到三点距离同样的点. 分析:计算几何.分三类情况讨论: 1.三点共线,不成立. 2.多点重叠,有多组解. 3.是三角形,输出中点. 说明:注意绝对值小于0.05的按0计算:负数的四舍 ...
- pandas数组(pandas Series)-(4)NaN的处理
上一篇pandas数组(pandas Series)-(3)向量化运算里说到,将两个 pandas Series 进行向量化运算的时候,如果某个 key 索引只在其中一个 Series 里出现,计算的 ...