美文网首页
mac动态链接库的生成和使用

mac动态链接库的生成和使用

作者: ag4kd | 来源:发表于2019-10-17 10:01 被阅读0次

源文件

动态库的头文件

//
// Created by binny on 2019/9/24.
//

#ifndef NDK_TEST_H
#define NDK_TEST_H

void sayHello();

#endif //NDK_TEST_H

动态库的源文件

  • test.c
//
// Created by binny on 2019/9/24.
//

#include "test.h"
#include "stdio.h"

void sayHello() {
    printf("JNI--test");
}
  • test2.c
//
// Created by binny on 2019/9/24.
//

#include "test.h"
#include "stdio.h"
void sayHello(){
    printf("JNI--test---2");
}

主函数源文件

//
// Created by binny on 2019/9/24.
//

#include "test.h"

int main() {
    sayHello();
    return 0;
}

动态库

动态库名字为libtest.dylib

注意动态库的名字必须为 libxxxx.dylib

  • 不同操作系统的动态链接库后缀不相同
  • Windows里动态链接库后缀为 .dll(Dynamic Link Library)
  • Linux里后缀为 .so
  • Mac里后缀为 .dylib

生成 test 动态库

-o 链接

-c 将.c源文件编译成.o目标文件,不进行链接

编译

clang -c test.c

创建动态链接库:

生成动态库:

clang -shared test.o -o test.dylib

使用动态链接库

-l(小写L)后接xxxx 表示调用libxxxx.dylib 库

如果库不在系统默认的目录下要使用-L后接路径 再接-lxxxxx

-I(大写i)后接路径,表示在此路径下寻找头文件 xxxx.h

编译 mian函数所在的源文件

clang main.c -c

链接

clang main.o -L. -l test -o main

-L. 意思是在当前目录下(./)寻找库

执行

./main

输出结果:JNI--test%

生成 test2 动态库

使用test2.c作为动态库源文件

  • 编译:clang -c test2.c
  • 生成动态库:clang -shared test2.o libtest.dylib

执行mian文件,输出JNI--test222%

注意事项

动态库的名字文字必须为:libxxxx.dylib

相关文章

网友评论

      本文标题:mac动态链接库的生成和使用

      本文链接:https://www.haomeiwen.com/subject/gshmmctx.html