zoukankan      html  css  js  c++  java
  • Android应用的跨语言调用小结

        最近在搞客户端应用,对这几天学到的东东做下小结。

    1、Android是基于linux kernel,用C来写的部分代码。

    2、Android应用程序是用java语言来写的,开发工具一般用eclipse。

    3、Android应用程序如果想要调C写的代码怎么办?

         这个也比较简单,我们先回想下在C#里是如何调C++的,想起来了一个关键词,就是DLLImport,具体的用法为:【DLLImport("user32.dll")】:告诉.NET的公共语言运行时CLR,我想调用的非托管代码在user32.dll中,帮我把这个DLL加载到内存中来,然后采用public static extern 返回值 方法名(参数),可以调用外部dll定义的方法了,不过,还有一个比较痛苦的事就是,不同语言下的类型转换,譬如:指针、数组的转换,要一个方法一个方法地调试了。

        在Android平台上调C写的代码,道理、过程也差不多,只不过,也得破费一翻周折,先普及下linux上的相关知识:

        .c--C语言代码文件

        .cpp-C++语言的代码文件

        .h-C或C++程序的头文件

        .o --程序目标文件:就是源代码编译后但未进行链接的那此中间文件,相当于windows平台下的.obj文件。

        .a--静态链接库文件,相当于windows平台下的.lib文件 。一般需要头文件,.h文件才能调用。

        .so类库文件。

        基础知识了解了,再理一个转换的过程:

        a)首先要将c代码放到linux下(注:windows上也有linux虑拟机工具),编译成.a或.so文件。

        b)在eclipse工具里就可以直接加载.a和.h文件,或者直接调成.so文件就可以编译。

        c)在直接调成方法之后,也还有一件事就是:要进行Java Native Interface转换,跟上面提到的DLLImport类似。

       

  • 相关阅读:
    python基础——单元测试
    python基础——调试
    python基础——错误处理
    python基础——使用元类
    python基础——多重继承
    python基础——使用@property
    sql server 2000的安装
    [转载]目前流行的缺陷管理工具
    个人工作中ssd、audio python脚本总结
    python Synchronization between processes
  • 原文地址:https://www.cnblogs.com/ceecy/p/2408468.html
Copyright © 2011-2022 走看看