现在有个 .h 的头文件,里面有诸多的函数,我怎么在Java/Android里面调用,可以通过JNI直接调用吗,需要进行转换封装什么的吗,我对JNI也不是很熟,请各位指点下,举个函数:
DWORD CSP_DECLARE CSP_GetDeviceParam(IN H_DEVICE hDevice, 
   OUT void * pData, 
   IN OUT DWORD * pdwDataLen, 
   IN DWORD dwFlag);
这个可以直接调用吗,该怎么调,要转换的话该怎么转换,或者有什么其他的方法,就是能在Java/Android中可以使用即可...
谢谢各位...

解决方案 »

  1.   

    不只是光有头文件,关键还是要有实现c source或lib,最终都是编译成库,被Java域里通过JNI调用c关键是要能被Android prebuilt下的工具链的c/c++编译工具编译
      

  2.   

    有对应的c文件,也都编译成库文件然后用System.loadLibrary("Xxx");加载到Java中,可是怎么调用库里面的函数啊,是不是还要参看.h的头文件啊,可是像DWORD 这样类型的怎么引用啊,Java中对应的是什么啊...
      

  3.   

    DWORD 是什么东东!
    凭什么Java里要有跟你对应的,DWORD本来就是特定系统自己定义的,把它转成标准c的JNI是可以实现Java->c的,到了c了,还不会调用库里的函数?
      

  4.   

    请教怎么讲DWORD转成标准c的....谢谢...
      

  5.   

    晕倒,不就是一个机器字,两个机器字,还是别的特殊结构吗int, long, struct, ...
      

  6.   

    下个NDK,里面有很多例子可以参考
      

  7.   

    嗯.我看了一些例子,那种的话我会调用,可是这种的话不知道怎么调,就是那个DWORD 什么的,不知道怎么弄,就是怎么弄成那种常见的那种啊,像这种的
    int CDECL lame_encode_buffer_interleaved(
            lame_global_flags*  gfp,          
            short int           pcm[],         
            int                 num_samples,  
            unsigned char*      mp3buf,       
            int                 mp3buf_size );
      

  8.   

    DWORD是windows平台上编程常用的。 到android上,直接在某个头文件中typedef int DWORD就好了。
      

  9.   

    看样子typedef int DWORD 你把它写在最上面就可以把下面所有DWORD这种类型换成int了  所以这么容易猜的事你都猜不到