1. 程式人生 > >JNI方法呼叫C++類庫 一

JNI方法呼叫C++類庫 一

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

佈局:

C++ ------------>lib,檔案dms_lib.cpp

C++ ------------>JNI C++,檔案dms_jni.cpp

JAVA ------------>JNI JAVA,檔案dms.java

通過以下命令,可以生成java的jni標頭檔案:javac dms.java && javah dms

/**  * file: dms.java * {@hide} */public class dms{    // can't instantiate this class    private dms()    {    }    /**     * start the upnp device.         */
    public static native int startDevice();    /**     * stop the upnp device.     */    public static native int stopDevice();}

通過命令javac dms.java && javah dms生成的標頭檔案:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>/* Header for class dms */#ifndef _Included_dms#define _Included_dms#ifdef __cplusplusextern "C" {#endif/* * Class:     dms * Method:    startDevice * Signature: ()I */JNIEXPORT jint JNICALL Java_dms_startDevice  (JNIEnv *, jclass);/* * Class:     dms * Method:    stopDevice * Signature: ()I */JNIEXPORT jint JNICALL Java_dms_stopDevice  (JNIEnv *, jclass);#ifdef __cplusplus}#endif#endif

dms_lib.h:

#ifndef DMS_LIB_H#define DMS_LIB_H#include "Neptune.h"#include "Platinum.h"class dms{    private dms();        private PLT_UPnP m_upnp;    private PLT_DeviceHostReference m_device;        public void start_dms();    public void stop_dms();}    #endif //DMS_LIB_H

dms_lib.cpp:

#include <stdlib.h>#include <stdio.h>#include <string.h>#include "Neptune.h"#include "Platinum.h"#include "dms_lib.h"dms:dms{ /*  char *str = "test";  printf("start...%s",str);   */ // setup Neptune logging NPT_LogManager::GetDefault().Configure("plist:.level=INFO;.handlers=ConsoleHandler;.ConsoleHandler.colors=off;.ConsoleHandler.filter=42"); m_device = new PLT_FileMediaServer("/data/local",         "Platinum UPnP Media Server"); NPT_List<NPT_IpAddress> list; NPT_CHECK_SEVERE(PLT_UPnPMessageHelper::GetIPAddresses(list)); NPT_String ip = list.GetFirstItem()->ToString(); m_device->m_ModelDescription = "Platinum Media Server"; m_device->m_ModelURL = "http://www.plutinosoft.com/"; m_device->m_ModelNumber = "1.0"; m_device->m_ModelName = "Platinum Media Server"; m_device->m_Manufacturer = "Plutinosoft"; m_device->m_ManufacturerURL = "http://www.plutinosoft.com/"; m_upnp.AddDevice(m_device);}void dms::start_dms(){ NPT_CHECK_SEVERE(m_upnp.Start());   }void dms::stop_dms(){ /*  char *str = "test";  printf("stop...");   */ m_upnp.Stop();}









           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述