如何在Mac OSX 中制作dylib和使用dylib

news/2025/2/25 18:58:42

如何在Mac OSX 中制作dylib和使用dylib

本文本着简单易读的方式给朋友们,本人为原创

1.首先是构建一个函数库

  编辑add.c

  int add(int a,int b)

  {

  return a+b;

  }

  int axb(int a,int b)

  {

  return a*b;

  }

  保存

  其中两个函数  add  axb

  这是简单的写的,复杂的自己开发,这里主要介绍方法

2.编译函数库

  gcc -c add.c -o add.o

  //下面是linux系统时

  ar rcs libadd.a add.o  

  //如果你是linux 就用这种库

  //下面是Mac OSX 

  gcc add.o -dynamiclib -current_version 1.0  -o libadd.dylib

  得到 libadd.dylib

3.编辑testadd.c

  #include <stdio.h>

  #include <stdlib.h>

  #include <dlfcn.h>

  int main(int argc,char *argv[])

  {

int a,b;

a=10;

b=9;

        int c;

c=add(a,b);

printf("%d\n",c);

return 1;

  }

  保存

4.编译testadd.c

  gcc testadd.c -o testadd -L. -ladd

  ./testadd

 

  输出19

 

5.编辑dladd.c

  #include <stdio.h>

  #include <stdlib.h>

  #include <dlfcn.h>

  int main(int argc,char *argv[])

  {

int *ab;

void *h=dlopen("./libadd.dylib",RTLD_LAZY);

ab=dlsym(h,"add");

printf("add=address is 0x %x\n",ab);

dlclose(h);

return 1;

  }

  这个是为了查看函数库在库中的地址的

6.编译dladd.c

   gcc dladd.c -o dladd -ldl

   ./dladd

 

   add=address is 0x 23fe2

   这是输出的地址了


http://www.niftyadmin.cn/n/4036204.html

相关文章

Adobe Flex迷你教程 -- 合理使用Module分割项目以及对Module的使用

现在说说Module&#xff0c;这篇教程代码不是最重要的&#xff0c;怎么样合理的使用Module以及注意的问题才是关键&#xff0c;所以建议大家注意下面红色语句。Module&#xff0c;可以将我们的项目按需划分为N个模块&#xff0c;在编译时将项目编译为主文件以及N个module的swf。…

HDU 4883 TIANKENG’s restaurant (贪心)

链接&#xff1a;带我学习。带我飞 第一次BC&#xff0c;稳挂&#xff0c;WA n多次。今天又一次做了一下 略挫#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <map> #include <string> #include …

BZOJ 1570: [JSOI2008]Blue Mary的旅行( 二分答案 + 最大流 )

二分答案, 然后对于答案m, 把地点分成m层, 对于边(u, v), 第x层的u -> 第x1层的v 连边. 然后第x层的u -> 第x1层的u连边(oo), S->第一层的1(PEOPLE_NUMBER), 每一层N -> T(oo), 假如最大流是等于人数&#xff0c;就是可行答案. ----------------------------------…

受邀Quora,试水麻球

受Quora邀请了&#xff01;有的加我

通过SSH连接N900

N900采用的maemo是基于debian的linux系统&#xff0c;通过自带的application manager管理软件时&#xff0c;操作体验还有待改进&#xff0c;所以这里推荐通过SSH连接&#xff0c;使用cli来进行相应操作。 需要在手机端安装OpenSSH来开启SSH服务&#xff0c;在application mana…

PureMVC总结(附Hello World含PureMVC源码代码和文档)

PureMVC总的流程是&#xff1a; Faade通过一个STARTUP的Command来进行Proxy和Mediator的注册&#xff0c;初始化&#xff08;这样Proxy和Mediator就可以接受Notification消息&#xff09;。 Command通过Faade中注册的对应Notification触发。 Proxy只发送Notification&#xff0…

函数的参数设置

函数的参数设置 默认参数 def power(x, n2):s 1while n > 0:n n - 1s s * xreturn s有几点要注意&#xff1a; 一是必选参数在前&#xff0c;默认参数在后&#xff0c;否则Python的解释器会报错&#xff08;思考一下为什么默认参数不能放在必选参数前面&#xff09;&…

Flash ActionScript (15) as2.0与as3.0区别

学习AS3.0已有一段时间了&#xff0c;想把自已对AS3的一些认识和大家分享一下。主要想说说AS3与AS2的不同之处&#xff0c;没有什么逻辑性&#xff0c;想到什么就写点什么&#xff0c;因此&#xff0c;它不适合AS高手们阅读。本文将力求用最直白的语言&#xff0c;尽量不用那些…