锘??xml version="1.0" encoding="utf-8" standalone="yes"?>黄网站免费久久,久久久久久网,欧美日韩视频一区二区三区http://m.shnenglu.com/justin-shi/category/7794.html鍔姏鍋氫竴涓悎鏍肩殑鐢蜂漢銆傘傘?/description>zh-cnFri, 08 Aug 2008 05:23:21 GMTFri, 08 Aug 2008 05:23:21 GMT60鍦?Windows 涓疄鐜?Java 鏈湴鏂規硶http://m.shnenglu.com/justin-shi/archive/2008/08/08/58298.html騫藉菇騫藉菇Thu, 07 Aug 2008 21:17:00 GMThttp://m.shnenglu.com/justin-shi/archive/2008/08/08/58298.htmlhttp://m.shnenglu.com/justin-shi/comments/58298.htmlhttp://m.shnenglu.com/justin-shi/archive/2008/08/08/58298.html#Feedback0http://m.shnenglu.com/justin-shi/comments/commentRss/58298.htmlhttp://m.shnenglu.com/justin-shi/services/trackbacks/58298.html

鍦?Windows 涓疄鐜?Java 鏈湴鏂規硶

developerWorks
鏂囨。閫夐」
灝嗘欏典綔涓虹數瀛愰偖浠跺彂閫?src="http://www.ibm.com/i/v14/icons/em.gif"

灝嗘欏典綔涓虹數瀛愰偖浠跺彂閫?/font>


綰у埆錛?鍒濈駭

David WendtWebSphere Development Research Triangle Park, NC

1999 騫?5 鏈?01 鏃?/p>

鏈枃涓哄湪 32 浣?Windows 騫沖彴涓婂疄鐜?Java 鏈湴鏂規硶鎻愪緵浜嗗疄鐢ㄧ殑紺轟緥銆佹楠ゅ拰鍑嗗垯銆傝繖浜涚ず渚嬪寘鎷紶閫掑拰榪斿洖甯哥敤鐨勬暟鎹被鍨嬨?

鏈枃涓殑紺轟緥浣跨敤 Sun Microsystems 鍏徃鍒涘緩鐨?Java DevelopmentKit (JDK) 鐗堟湰 1.1.6 鍜?Java鏈湴鎺ュ彛 (JNI) 瑙勮寖銆?鐢?C 璇█緙栧啓鐨勬湰鍦頒唬鐮佹槸鐢?MicrosoftVisual C++ 緙栬瘧鍣ㄧ紪璇戠敓鎴愮殑銆?

綆浠?/span>

鏈枃鎻愪緵璋冪敤鏈湴 C 浠g爜鐨?Java 浠g爜紺轟緥錛屽寘鎷紶閫掑拰榪斿洖鏌愪簺甯哥敤鐨勬暟鎹被鍨嬨傛湰鍦版柟娉曞寘鍚湪鐗瑰畾浜庡鉤鍙扮殑鍙墽琛屾枃浠朵腑銆傚氨鏈枃涓殑紺轟緥鑰岃█錛屾湰鍦版柟娉曞寘鍚湪 Windows 32 浣嶅姩鎬侀摼鎺ュ簱 (DLL) 涓?/p>

涓嶈繃鎴戣鎻愰啋鎮紝瀵?Java 澶栭儴鐨勮皟鐢ㄩ氬父涓嶈兘縐繪鍒板叾浠栧鉤鍙頒笂錛屽湪 applet 涓繕鍙兘寮曞彂瀹夊叏寮傚父銆傚疄鐜版湰鍦頒唬鐮佸皢浣挎偍鐨?Java 搴旂敤紼嬪簭鏃犳硶閫氳繃 100% 綰?Java 嫻嬭瘯銆備絾鏄紝濡傛灉蹇呴』鎵ц鏈湴璋冪敤錛屽垯瑕佽冭檻鍑犱釜鍑嗗垯錛?/p>

  1. 灝嗘偍鐨勬墍鏈夋湰鍦版柟娉曢兘灝佽鍦ㄥ崟涓被涓紝榪欎釜綾昏皟鐢ㄥ崟涓?DLL銆傚浜庢瘡縐嶇洰鏍囨搷浣滅郴緇燂紝閮藉彲浠ョ敤鐗瑰畾浜庨傚綋騫沖彴鐨勭増鏈浛鎹㈣繖涓?DLL銆傝繖鏍峰氨鍙互灝嗘湰鍦頒唬鐮佺殑褰卞搷鍑忚嚦鏈灝忥紝騫舵湁鍔╀簬灝嗕互鍚庢墍闇鐨勭Щ妞嶉棶棰樺寘鍚湪鍐呫?
  2. 鏈湴鏂規硶瑕佺畝鍗曘傚敖閲忓皢鎮ㄧ殑 DLL 瀵逛換浣曠涓夋柟錛堝寘鎷?Microsoft錛夎繍琛屾椂 DLL 鐨勪緷璧栧噺鍒版渶灝忋備嬌鎮ㄧ殑鏈湴鏂規硶灝介噺鐙珛錛屼互灝嗗姞杞芥偍鐨?DLL 鍜屽簲鐢ㄧ▼搴忔墍闇鐨勫紑閿鍑忓埌鏈灝忋傚鏋滈渶瑕佽繍琛屾椂 DLL錛屽繀欏婚殢搴旂敤紼嬪簭涓璧鋒彁渚涘畠浠?




鍥為〉棣?/font>


Java 璋冪敤 C

瀵逛簬璋冪敤 C 鍑芥暟鐨?Java 鏂規硶錛屽繀欏誨湪 Java 綾諱腑澹版槑涓涓湰鍦版柟娉曘傚湪鏈儴鍒嗙殑鎵鏈夌ず渚嬩腑錛屾垜浠皢鍒涘緩涓涓悕涓?MyNative 鐨勭被錛屽茍閫愭鍦ㄥ叾涓姞鍏ユ柊鐨勫姛鑳姐傝繖寮鴻皟浜嗕竴縐嶆濇兂錛屽嵆灝嗘湰鍦版柟娉曢泦涓湪鍗曚釜綾諱腑錛屼互渚垮皢浠ュ悗鎵闇鐨勭Щ妞嶅伐浣滃噺鍒版渶灝戙?/p>



鍥為〉棣?/font>


紺轟緥 1 -- 浼犻掑弬鏁?/span>

鍦ㄧ涓涓ず渚嬩腑錛屾垜浠皢涓変釜甯哥敤鍙傛暟綾誨瀷浼犻掔粰鏈湴鍑芥暟錛?String銆?int鍜?boolean 銆傛湰渚嬭鏄庡湪鏈湴 C 浠g爜涓浣曞紩鐢ㄨ繖浜涘弬鏁般?

                        public class MyNative
                        {
                        public void showParms( String s, int i, boolean b )
                        {
                        showParms0( s, i , b );
                        }
                        private native void showParms0( String s, int i, boolean b );
                        static
                        {
                        System.loadLibrary( "MyNative" );
                        }
                        }
                        

璇鋒敞鎰忥紝鏈湴鏂規硶琚0鏄庝負涓撶敤鐨勶紝騫跺垱寤轟簡涓涓寘瑁呮柟娉曠敤浜庡叕鐢ㄧ洰鐨勩傝繖榪涗竴姝ュ皢鏈湴鏂規硶鍚屼唬鐮佺殑鍏朵綑閮ㄥ垎闅旂寮鏉ワ紝浠庤屽厑璁擱拡瀵規墍闇鐨勫鉤鍙板瀹冭繘琛屼紭鍖栥?static瀛愬彞鍔犺澆鍖呭惈鏈湴鏂規硶瀹炵幇鐨?DLL銆?

涓嬩竴姝ユ槸鐢熸垚 C 浠g爜鏉ュ疄鐜?showParms0 鏂規硶銆傛鏂規硶鐨?C 鍑芥暟鍘熷瀷鏄氳繃瀵?.class 鏂囦歡浣跨敤 javah 瀹炵敤紼嬪簭鏉ュ垱寤虹殑錛岃?.class 鏂囦歡鏄氳繃緙栬瘧 MyNative.java 鏂囦歡鐢熸垚鐨勩傝繖涓疄鐢ㄧ▼搴忓彲鍦?JDK 涓壘鍒般備笅闈㈡槸 javah 鐨勭敤娉曪細

                     javac MyNative.java錛堝皢 .java 緙栬瘧涓?.class錛?
                        javah -jni -classpath . (鎸囧畾婧愪唬鐮佺殑褰撳墠鐩綍錛岃繖閲岃娉ㄦ剰錛屾槸鎸噋ackage鐩綍鎵鍦ㄧ殑鐩綍)
                        MyNative錛堢敓鎴?.h 鏂囦歡錛?
                        

榪欏皢鐢熸垚涓涓?MyNative.h 鏂囦歡錛屽叾涓寘鍚竴涓湰鍦版柟娉曞師鍨嬶紝濡備笅鎵紺猴細

                       /*
                        * Class:     MyNative
                        * Method:    showParms0
                        * Signature: (Ljava/lang/String;IZ)V
                        */
                        JNIEXPORT void JNICALL Java_MyNative_showParms0
                        (JNIEnv *, jobject, jstring, jint, jboolean);
                        

絎竴涓弬鏁版槸璋冪敤 JNI 鏂規硶鏃朵嬌鐢ㄧ殑 JNI Environment 鎸囬拡銆傜浜屼釜鍙傛暟鏄寚鍚戝湪姝?Java 浠g爜涓疄渚嬪寲鐨?Java 瀵硅薄 MyNative 鐨勪竴涓彞鏌勩傚叾浠栧弬鏁版槸鏂規硶鏈韓鐨勫弬鏁般傝娉ㄦ剰錛孧yNative.h 鍖呮嫭澶存枃浠?jni.h銆俲ni.h 鍖呭惈 JNI API 鍜屽彉閲忕被鍨嬶紙鍖呮嫭jobject銆乯string銆乯int銆乯boolean錛岀瓑絳夛級鐨勫師鍨嬪拰鍏朵粬澹版槑銆?/p>

鏈湴鏂規硶鏄湪鏂囦歡 MyNative.c 涓敤 C 璇█瀹炵幇鐨勶細

                        #include <stdio.h>
                        #include "MyNative.h"
                        JNIEXPORT void JNICALL Java_MyNative_showParms0
                        (JNIEnv *env, jobject obj, jstring s, jint i, jboolean b)
                        {
                        const char* szStr = (*env)->GetStringUTFChars( env, s, 0 );
                        printf( "String = [%s]\n", szStr );
                        printf( "int = %d\n", i );
                        printf( "boolean = %s\n", (b==JNI_TRUE ? "true" : "false") );
                        (*env)->ReleaseStringUTFChars( env, s, szStr );
                        }
                        

JNI API錛孏etStringUTFChars錛岀敤鏉ユ牴鎹?Java 瀛楃涓叉垨 jstring 鍙傛暟鍒涘緩 C 瀛楃涓層傝繖鏄繀闇鐨勶紝鍥犱負鍦ㄦ湰鍦頒唬鐮佷腑涓嶈兘鐩存帴璇誨彇 Java 瀛楃涓詫紝鑰屽繀欏誨皢鍏惰漿鎹負 C 瀛楃涓叉垨 Unicode銆傛湁鍏寵漿鎹?Java 瀛楃涓茬殑璇︾粏淇℃伅錛岃鍙傞槄鏍囬涓?NLS Strings and JNI 鐨勪竴綃囪鏂囥備絾鏄紝jboolean 鍜?jint 鍊煎彲浠ョ洿鎺ヤ嬌鐢ㄣ?/p>

MyNative.dll 鏄氳繃緙栬瘧 C 婧愭枃浠跺垱寤虹殑銆備笅闈㈢殑緙栬瘧璇彞浣跨敤 Microsoft Visual C++ 緙栬瘧鍣細

                           cl -Ic:\jdk1.1.6\include -Ic:\jdk1.1.6\include\win32 -LD MyNative.c
                        -FeMyNative.dll
                        

鍏朵腑 c:\jdk1.1.6 鏄?JDK 鐨勫畨瑁呰礬寰勩?/p>

MyNative.dll 宸插垱寤哄ソ錛岀幇鍦ㄥ氨鍙皢鍏剁敤浜?MyNative 綾諱簡銆?
鍙互榪欐牱嫻嬭瘯榪欎釜鏈湴鏂規硶錛氬湪 MyNative 綾諱腑鍒涘緩涓涓?main 鏂規硶鏉ヨ皟鐢?showParms 鏂規硶錛屽涓嬫墍紺猴細

                            public static void main( String[] args )
                        {
                        MyNative obj = new MyNative();
                        obj.showParms( "Hello", 23, true );
                        obj.showParms( "World", 34, false );
                        }
                        

褰撹繍琛岃繖涓?Java 搴旂敤紼嬪簭鏃訛紝璇風‘淇?MyNative.dll 浣嶄簬 Windows 鐨?PATH 鐜鍙橀噺鎵鎸囧畾鐨勮礬寰勪腑鎴栧綋鍓嶇洰褰曚笅銆傚綋鎵ц姝?Java 紼嬪簭鏃訛紝濡傛灉鏈壘鍒拌繖涓?DLL錛屾偍鍙兘浼氱湅鍒頒互涓嬬殑娑堟伅錛?/p>
                           java MyNative
                        Can't find class MyNative
                        

榪欐槸鍥犱負 static 瀛愬彞鏃犳硶鍔犺澆榪欎釜 DLL錛屾墍浠ュ湪鍒濆鍖?MyNative 綾繪椂寮曞彂寮傚父銆侸ava 瑙i噴鍣ㄥ鐞嗚繖涓紓甯革紝騫舵姤鍛婁竴涓竴鑸敊璇紝鎸囧嚭鎵句笉鍒拌繖涓被銆?
濡傛灉鐢?-verbose 鍛戒護琛岄夐」榪愯瑙i噴鍣紝鎮ㄥ皢鐪嬪埌瀹冨洜鎵句笉鍒拌繖涓?DLL 鑰屽姞杞?UnsatisfiedLinkError 寮傚父銆?

濡傛灉姝?Java 紼嬪簭瀹屾垚榪愯錛屽氨浼氳緭鍑轟互涓嬪唴瀹癸細

                        java MyNative
                        String = [Hello]
                        int = 23
                        boolean = true
                        String = [World]
                        int
                        = 34
                        

boolean = false 紺轟緥 2 -- 榪斿洖涓涓?/strong>

鏈緥灝嗚鏄庡浣曞湪鏈湴鏂規硶涓疄鐜拌繑鍥炰唬鐮併?
灝嗚繖涓柟娉曟坊鍔犲埌 MyNative 綾諱腑錛岃繖涓被鐜板湪鍙樹負浠ヤ笅褰㈠紡錛?

                        public class MyNative
                        {
                        public void showParms( String s, int i, boolean b )
                        {
                        showParms0( s, i , b );
                        }
                        public int hypotenuse( int a, int b )
                        {
                        return hyptenuse0( a, b );
                        }
                        private native void showParms0( String s, int i, boolean b );
                        private native int  hypotenuse0( int a, int b );
                        static
                        {
                        System.loadLibrary( "MyNative" );
                        }
                        /* 嫻嬭瘯鏈湴鏂規硶 */
                        public static void main( String[] args )
                        {
                        MyNative obj = new MyNative();
                        System.out.println( obj.hypotenuse(3,4) );
                        System.out.println( obj.hypotenuse(9,12) );
                        }
                        }
                        

鍏敤鐨?hypotenuse 鏂規硶璋冪敤鏈湴鏂規硶 hypotenuse0 鏉ユ牴鎹紶閫掔殑鍙傛暟璁$畻鍊鹼紝騫跺皢緇撴灉浣滀負涓涓暣鏁拌繑鍥炪傝繖涓柊鏈湴鏂規硶鐨勫師鍨嬫槸浣跨敤 javah 鐢熸垚鐨勩傝娉ㄦ剰錛屾瘡嬈¤繍琛岃繖涓疄鐢ㄧ▼搴忔椂錛屽畠灝嗚嚜鍔ㄨ鐩栧綋鍓嶇洰褰曚腑鐨?MyNative.h銆傛寜浠ヤ笅鏂瑰紡鎵ц javah錛?/p>
 javah -jni MyNative
                        

鐢熸垚鐨?MyNative.h 鐜板湪鍖呭惈 hypotenuse0 鍘熷瀷錛屽涓嬫墍紺猴細

                        /*
                        * Class:     MyNative
                        * Method:    hypotenuse0
                        * Signature: (II)I
                        */
                        JNIEXPORT jint JNICALL Java_MyNative_hypotenuse0
                        (JNIEnv *, jobject, jint, jint);
                        

璇ユ柟娉曟槸鍦?MyNative.c 婧愭枃浠朵腑瀹炵幇鐨勶紝濡備笅鎵紺猴細

                        #include <stdio.h>
                        #include <math.h>
                        #include "MyNative.h"
                        JNIEXPORT void JNICALL Java_MyNative_showParms0
                        (JNIEnv *env, jobject obj, jstring s, jint i, jboolean b)
                        {
                        const char* szStr = (*env)->GetStringUTFChars( env, s, 0 );
                        printf( "String = [%s]\n", szStr );
                        printf( "int = %d\n", i );
                        printf( "boolean = %s\n", (b==JNI_TRUE ? "true" : "false") );
                        (*env)->ReleaseStringUTFChars( env, s, szStr );
                        }
                        JNIEXPORT jint JNICALL Java_MyNative_hypotenuse0
                        (JNIEnv *env, jobject obj, jint a, jint b)
                        {
                        int rtn = (int)sqrt( (double)( (a*a) + (b*b) ) );
                        return (jint)rtn;
                        }
                        

鍐嶆璇鋒敞鎰忥紝jint 鍜?int 鍊兼槸鍙簰鎹㈢殑銆?
浣跨敤鐩稿悓鐨勭紪璇戣鍙ラ噸鏂扮紪璇戣繖涓?DLL錛?

                        cl -Ic:\jdk1.1.6\include -Ic:\jdk1.1.6\include\win32 -LD MyNative.c
                        -FeMyNative.dll
                        

鐜板湪鎵ц java MyNative 灝嗚緭鍑?5 鍜?15 浣滀負鏂滆竟鐨勫箋?/p>

紺轟緥 3 -- 闈欐佹柟娉?/strong>

鎮ㄥ彲鑳藉湪涓婇潰鐨勭ず渚嬩腑宸茬粡娉ㄦ剰鍒幫紝瀹炰緥鍖栫殑 MyNative 瀵硅薄鏄病蹇呰鐨勩傚疄鐢ㄦ柟娉曢氬父涓嶉渶瑕佸疄闄呯殑瀵硅薄錛岄氬父閮藉皢瀹冧滑鍒涘緩涓洪潤鎬佹柟娉曘傛湰渚嬭鏄庡浣曠敤涓涓潤鎬佹柟娉曞疄鐜頒笂闈㈢殑紺轟緥銆傛洿鏀?MyNative.java 涓殑鏂規硶絳懼悕錛屼互浣垮畠浠垚涓洪潤鎬佹柟娉曪細

                        public static int hypotenuse( int a, int b )
                        {
                        return hypotenuse0(a,b);
                        }
                        ...
                        private static native int  hypotenuse0( int a, int b );
                        

鐜板湪榪愯 javah 涓?hypotenuse0鍒涘緩涓涓柊鍘熷瀷錛岀敓鎴愮殑鍘熷瀷濡備笅鎵紺猴細

                        /*
                        * Class:     MyNative
                        * Method:    hypotenuse0
                        * Signature: (II)I
                        */
                        JNIEXPORT jint JNICALL Java_MyNative_hypotenuse0
                        (JNIEnv *, jclass, jint, jint);
                        

C 婧愪唬鐮佷腑鐨勬柟娉曠鍚嶅彉浜嗭紝浣嗕唬鐮佽繕淇濇寔鍘熸牱錛?/p>
                        JNIEXPORT jint JNICALL Java_MyNative_hypotenuse0
                        (JNIEnv *env, jclass cls, jint a, jint b)
                        {
                        int rtn = (int)sqrt( (double)( (a*a) + (b*b) ) );
                        return (jint)rtn;
                        }
                        

鏈川涓婏紝jobject 鍙傛暟宸插彉涓?jclass 鍙傛暟銆傛鍙傛暟鏄寚鍚?MyNative.class 鐨勪竴涓彞鏌勩俶ain 鏂規硶鍙洿鏀逛負浠ヤ笅褰㈠紡錛?/p>
                        public static void main( String[] args )
                        {
                        System.out.println( MyNative.hypotenuse( 3, 4 ) );
                        System.out.println( MyNative.hypotenuse( 9, 12 ) );
                        }
                        

鍥犱負鏂規硶鏄潤鎬佺殑錛屾墍浠ヨ皟鐢ㄥ畠涓嶉渶瑕佸疄渚嬪寲 MyNative 瀵硅薄銆傛湰鏂囧悗闈㈢殑紺轟緥灝嗕嬌鐢ㄩ潤鎬佹柟娉曘?/p>

紺轟緥 4 -- 浼犻掓暟緇?/strong>

鏈緥璇存槑濡備綍浼犻掓暟緇勫瀷鍙傛暟銆傛湰渚嬩嬌鐢ㄤ竴涓熀鏈被鍨嬶紝boolean錛屽茍灝嗘洿鏀規暟緇勫厓绱犮備笅涓涓ず渚嬪皢璁塊棶 String錛堥潪鍩烘湰綾誨瀷錛夋暟緇勩傚皢涓嬮潰鐨勬柟娉曟坊鍔犲埌 MyNative.java 婧愪唬鐮佷腑錛?

                        public static void setArray( boolean[] ba )
                        {
                        for( int i=0; i < ba.length; i++ )
                        ba[i] = true;
                        setArray0( ba );
                        }
                        ...
                        private static native void setArray0( boolean[] ba );
                        

鍦ㄦ湰渚嬩腑錛屽竷灝斿瀷鏁扮粍琚垵濮嬪寲涓?true錛屾湰鍦版柟娉曞皢鎶婄壒瀹氱殑鍏冪礌璁劇疆涓?false銆傚悓鏃訛紝鍦?Java 婧愪唬鐮佷腑錛屾垜浠彲浠ユ洿鏀?main 浠ヤ嬌鍏跺寘鍚祴璇曚唬鐮侊細

                        boolean[] ba = new boolean[5];
                        MyNative.setArray( ba );
                        for( int i=0; i < ba.length; i++ )
                        System.out.println( ba[i] );
                        

鍦ㄧ紪璇戞簮浠g爜騫舵墽琛?javah 浠ュ悗錛孧yNative.h 澶存枃浠跺寘鍚互涓嬬殑鍘熷瀷錛?/p>
                        /*
                        * Class:     MyNative
                        * Method:    setArray0
                        * Signature: ([Z)V
                        */
                        JNIEXPORT void JNICALL Java_MyNative_setArray0
                        (JNIEnv *, jclass, jbooleanArray);
                        

璇鋒敞鎰忥紝甯冨皵鍨嬫暟緇勬槸浣滀負鍗曚釜鍚嶄負 jbooleanArray 鐨勭被鍨嬪垱寤虹殑銆?
鍩烘湰綾誨瀷鏈夊畠浠嚜宸茬殑鏁扮粍綾誨瀷錛屽 jintArray 鍜?jcharArray銆?
闈炲熀鏈被鍨嬬殑鏁扮粍浣跨敤 jobjectArray 綾誨瀷銆備笅涓涓ず渚嬩腑鍖呮嫭涓涓?jobjectArray銆傝繖涓竷灝旀暟緇勭殑鏁扮粍鍏冪礌鏄氳繃 JNI 鏂規硶 GetBooleanArrayElements 鏉ヨ闂殑銆?
閽堝姣忕鍩烘湰綾誨瀷閮芥湁絳変環鐨勬柟娉曘傝繖涓湰鍦版柟娉曟槸濡備笅瀹炵幇鐨勶細

                        JNIEXPORT void JNICALL Java_MyNative_setArray0
                        (JNIEnv *env, jclass cls, jbooleanArray ba)
                        {
                        jboolean* pba = (*env)->GetBooleanArrayElements( env, ba, 0 );
                        jsize len = (*env)->GetArrayLength(env, ba);
                        int i=0;
                        // 鏇存敼鍋舵暟鏁扮粍鍏冪礌
                        for( i=0; i < len; i+=2 )
                        pba[i] = JNI_FALSE;
                        (*env)->ReleaseBooleanArrayElements( env, ba, pba, 0 );
                        }
                        

鎸囧悜甯冨皵鍨嬫暟緇勭殑鎸囬拡鍙互浣跨敤 GetBooleanArrayElements 鑾峰緱銆?
鏁扮粍澶у皬鍙互鐢?GetArrayLength 鏂規硶鑾峰緱銆備嬌鐢?ReleaseBooleanArrayElements 鏂規硶閲婃斁鏁扮粍銆傜幇鍦ㄥ氨鍙互璇誨彇鍜屼慨鏀規暟緇勫厓绱犵殑鍊間簡銆俲size 澹版槑絳変環浜?jint錛堣鏌ョ湅瀹冪殑瀹氫箟錛岃鍙傞槄 JDK 鐨?include 鐩綍涓嬬殑 jni.h 澶存枃浠訛級銆?

紺轟緥 5 -- 浼犻?Java String 鏁扮粍

鏈緥灝嗛氳繃鏈甯哥敤鐨勯潪鍩烘湰綾誨瀷錛孞ava String錛岃鏄庡浣曡闂潪鍩烘湰瀵硅薄鐨勬暟緇勩傚瓧絎︿覆鏁扮粍琚紶閫掔粰鏈湴鏂規硶錛岃屾湰鍦版柟娉曞彧鏄皢瀹冧滑鏄劇ず鍒版帶鍒跺彴涓娿?
MyNative 綾誨畾涔変腑娣誨姞浜嗕互涓嬪嚑涓柟娉曪細

                        public static void showStrings( String[] sa )
                        {
                        showStrings0( sa );
                        }
                        private static void showStrings0( String[] sa );
                        

騫跺湪 main 鏂規硶涓坊鍔犱簡涓よ榪涜嫻嬭瘯錛?

                        String[] sa = new String[] { "Hello,", "world!", "JNI", "is", "fun." };
                        MyNative.showStrings( sa );
                        

鏈湴鏂規硶鍒嗗埆璁塊棶姣忎釜鍏冪礌錛屽叾瀹炵幇濡備笅鎵紺恒?/p>
                        JNIEXPORT void JNICALL Java_MyNative_showStrings0
                        (JNIEnv *env, jclass cls, jobjectArray sa)
                        {
                        int len = (*env)->GetArrayLength( env, sa );
                        int i=0;
                        for( i=0; i < len; i++ )
                        {
                        jobject obj = (*env)->GetObjectArrayElement(env, sa, i);
                        jstring str = (jstring)obj;
                        const char* szStr = (*env)->GetStringUTFChars( env, str, 0 );
                        printf( "%s ", szStr );
                        (*env)->ReleaseStringUTFChars( env, str, szStr );
                        }
                        printf( "\n" );
                        }
                        

鏁扮粍鍏冪礌鍙互閫氳繃 GetObjectArrayElement 璁塊棶銆?
鍦ㄦ湰渚嬩腑錛屾垜浠煡閬撹繑鍥炲兼槸 jstring 綾誨瀷錛屾墍浠ュ彲浠ュ畨鍏ㄥ湴灝嗗畠浠?jobject 綾誨瀷杞崲涓?jstring 綾誨瀷銆傚瓧絎︿覆鏄氳繃鍓嶉潰璁ㄨ榪囩殑鏂規硶鎵撳嵃鐨勩傛湁鍏沖湪 Windows 涓鐞?Java 瀛楃涓茬殑淇℃伅錛岃鍙傞槄鏍囬涓?NLS Strings and JNI 鐨勪竴綃囪鏂囥?

紺轟緥 6 -- 榪斿洖 Java String 鏁扮粍

鏈鍚庝竴涓ず渚嬭鏄庡浣曞湪鏈湴浠g爜涓垱寤轟竴涓瓧絎︿覆鏁扮粍騫跺皢瀹冭繑鍥炵粰 Java 璋冪敤鑰呫侻yNative.java 涓坊鍔犱簡浠ヤ笅鍑犱釜鏂規硶錛?/p>
                        public static String[] getStrings()
                        {
                        return getStrings0();
                        }
                        private static native String[] getStrings0();
                        

鏇存敼 main 浠ヤ嬌 showStrings 灝?getStrings 鐨勮緭鍑烘樉紺哄嚭鏉ワ細

                        MyNative.showStrings( MyNative.getStrings() );
                        

瀹炵幇鐨勬湰鍦版柟娉曡繑鍥炰簲涓瓧絎︿覆銆?/p>
                        JNIEXPORT jobjectArray JNICALL Java_MyNative_getStrings0
                        (JNIEnv *env, jclass cls)
                        {
                        jstring      str;
                        jobjectArray args = 0;
                        jsize        len = 5;
                        char*        sa[] = { "Hello,", "world!", "JNI", "is", "fun" };
                        int          i=0;
                        args = (*env)->NewObjectArray(env, len, (*env)->FindClass(env, "java/lang/String"), 0);
                        for( i=0; i < len; i++ )
                        {
                        str = (*env)->NewStringUTF( env, sa[i] );
                        (*env)->SetObjectArrayElement(env, args, i, str);
                        }
                        return args;
                        }
                        

瀛楃涓叉暟緇勬槸閫氳繃璋冪敤 NewObjectArray 鍒涘緩鐨勶紝鍚屾椂浼犻掍簡 String 綾誨拰鏁扮粍闀垮害涓や釜鍙傛暟銆侸ava String 鏄嬌鐢?NewStringUTF 鍒涘緩鐨勩係tring 鍏冪礌鏄嬌鐢?SetObjectArrayElement 瀛樺叆鏁扮粍涓殑銆?/p>



鍥為〉棣?/font>


璋冭瘯

鐜板湪鎮ㄥ凡緇忎負鎮ㄧ殑搴旂敤紼嬪簭鍒涘緩浜嗕竴涓湰鍦?DLL錛屼絾鍦ㄨ皟璇曟椂榪樿鐗㈣浠ヤ笅鍑犵偣銆傚鏋滀嬌鐢?Java 璋冭瘯鍣?java_g.exe錛屽垯榪橀渶瑕佸垱寤?DLL 鐨勪竴涓?#8220;璋冭瘯”鐗堟湰銆傝繖鍙槸琛ㄧず蹇呴』鍒涘緩鍚屽悕浣嗗甫鏈変竴涓?_g 鍚庣紑鐨?DLL 鐗堟湰銆傚氨 MyNative.dll 鑰岃█錛屼嬌鐢?java_g.exe 瑕佹眰鍦?Windows 鐨?PATH 鐜鎸囧畾鐨勮礬寰勪腑鏈変竴涓?MyNative_g.dll 鏂囦歡銆傚湪澶у鏁版儏鍐典笅錛岃繖涓?DLL 鍙互閫氳繃灝嗗師鏂囦歡閲嶅懡鍚嶆垨澶嶅埗涓哄叾鍚嶇О甯︾紑 _g 鐨勬枃浠躲?/p>

鐜板湪錛孞ava 璋冭瘯鍣ㄤ笉鍏佽鎮ㄨ繘鍏ユ湰鍦頒唬鐮侊紝浣嗘偍鍙互鍦?Java 鐜澶栦嬌鐢?C 璋冭瘯鍣紙濡?Microsoft Visual C++錛夎皟璇曟湰鍦版柟娉曘傞鍏堝皢婧愭枃浠跺鍏ヤ竴涓」鐩腑銆?
灝嗙紪璇戣緗皟鏁翠負鍦ㄧ紪璇戞椂灝?include 鐩綍鍖呮嫭鍦ㄥ唴錛?

 c:\jdk1.1.6\include;c:\jdk1.1.6\include\win32
                        

灝嗛厤緗緗負浠ヨ皟璇曟ā寮忕紪璇?DLL銆傚湪 Project Settings 涓殑 Debug 涓嬶紝灝嗗彲鎵ц鏂囦歡璁劇疆涓?java.exe錛堟垨鑰?java_g.exe錛屼絾瑕佺‘淇濇偍鐢熸垚浜嗕竴涓?_g.dll 鏂囦歡錛夈傜▼搴忓弬鏁板寘鎷寘鍚?main 鐨勭被鍚嶃傚鏋滃湪 DLL 涓緗簡鏂偣錛屽垯褰撹皟鐢ㄦ湰鍦版柟娉曟椂錛屾墽琛屽皢鍦ㄩ傚綋鐨勫湴鏂瑰仠姝€?/p>

涓嬮潰鏄緗竴涓?Visual C++ 6.0 欏圭洰鏉ヨ皟璇曟湰鍦版柟娉曠殑姝ラ銆?/p>

  1. 鍦?Visual C++ 涓垱寤轟竴涓?Win32 DLL 欏圭洰錛屽茍灝?.c 鍜?.h 鏂囦歡娣誨姞鍒拌繖涓」鐩腑銆?




  • 鍦?Tools 涓嬫媺寮忚彍鍗曠殑 Options 璁劇疆涓嬭緗?JDK 鐨?include 鐩綍銆備笅闈㈢殑瀵硅瘽妗嗘樉紺轟簡榪欎簺鐩綍銆?


  • 閫夋嫨 Build 涓嬫媺寮忚彍鍗曚笅鐨?Build MyNative.dll 鏉ュ緩绔嬭繖涓」鐩傜‘淇濆皢欏圭洰鐨勬椿鍔ㄩ厤緗緗負璋冭瘯錛堣繖閫氬父鏄己鐪佸鹼級銆?
  • 鍦?Project Settings 涓嬶紝璁劇疆 Debug 閫夐」鍗℃潵璋冪敤閫傚綋鐨?Java 瑙i噴鍣紝濡備笅鎵紺猴細


褰撴墽琛岃繖涓▼搴忔椂錛屽拷鐣?#8220;鍦?java.exe 涓壘涓嶅埌浠諱綍璋冭瘯淇℃伅”鐨勬秷鎭傚綋璋冪敤鏈湴鏂規硶鏃訛紝鍦?C 浠g爜涓緗殑浠諱綍鏂偣灝嗗湪閫傚綋鐨勫湴鏂瑰仠姝?Java 紼嬪簭鐨勬墽琛屻?/p>



鍥為〉棣?/font>


鍏朵粬淇℃伅

JNI 鏂規硶鍜?C++

涓婇潰榪欎簺紺轟緥璇存槑浜嗗浣曞湪 C 婧愭枃浠朵腑浣跨敤 JNI 鏂規硶銆傚鏋滀嬌鐢?C++錛屽垯璇峰皢鐩稿簲鏂規硶鐨勬牸寮忎粠錛?/p>
 (*env)->JNIMethod( env, .... );
                        

鏇存敼涓猴細

 env->JNIMethod( ... );
                        

鍦?C++ 涓紝JNI 鍑芥暟琚湅浣滄槸 JNIEnv 綾葷殑鎴愬憳鏂規硶銆?/p>

瀛楃涓插拰鍥藉璇█鏀寔

鏈枃涓嬌鐢ㄧ殑鎶鏈敤 UTF 鏂規硶鏉ヨ漿鎹㈠瓧絎︿覆銆備嬌鐢ㄨ繖浜涙柟娉曞彧鏄負浜嗘柟渚胯搗瑙侊紝濡傛灉搴旂敤紼嬪簭闇瑕佸浗瀹惰璦鏀寔 (NLS)錛屽垯涓嶈兘浣跨敤榪欎簺鏂規硶銆傛湁鍏沖湪 Windows 鍜?NLS 鐜涓鐞?Java 瀛楃涓叉紜柟娉曪紝璇峰弬鏍囬涓?NLS Strings and JNI 鐨勪竴綃囪鏂囥?/p>



鍥為〉棣?/font>


灝忕粨

鏈枃鎻愪緵鐨勭ず渚嬬敤鏈甯哥敤鐨勬暟鎹被鎹紙濡?jint 鍜?jstring錛夎鏄庝簡濡備綍瀹炵幇鏈湴鏂規硶錛屽茍璁ㄨ浜?Windows 鐗瑰畾鐨勫嚑涓棶棰橈紝濡傛樉紺哄瓧絎︿覆銆傛湰鏂囨彁渚涚殑紺轟緥騫舵湭鍖呮嫭鍏ㄩ儴 JNI錛孞NI 榪樺寘鎷叾浠栧弬鏁扮被鍨嬶紝濡?jfloat銆乯double銆乯short銆乯byte 鍜?jfieldID錛屼互鍙婄敤鏉ュ鐞嗚繖浜涚被鍨嬬殑鏂規硶銆傛湁鍏寵繖涓富棰樼殑璇︾粏淇℃伅錛岃鍙傞槄 Sun Microsystems 鎻愪緵鐨?Java 鏈湴鎺ュ彛瑙勮寖銆?/p>

鍏充簬浣滆?/span>

 

David Wendt 鏄?IBM WebSphere Studio 鐨勪竴鍚嶇▼搴忓憳錛岃宸ヤ綔瀹や綅浜庡寳鍗$綏鑾辯撼宸炵殑 Research Triangle Park銆傚彲浠ラ氳繃 wendt@us.ibm.com 涓庝粬鑱旂郴銆?/p>




騫藉菇 2008-08-08 05:17 鍙戣〃璇勮
]]>
swing涓璊FileChooser鐨勭敤娉?/title><link>http://m.shnenglu.com/justin-shi/archive/2008/08/08/58297.html</link><dc:creator>騫藉菇</dc:creator><author>騫藉菇</author><pubDate>Thu, 07 Aug 2008 17:38:00 GMT</pubDate><guid>http://m.shnenglu.com/justin-shi/archive/2008/08/08/58297.html</guid><wfw:comment>http://m.shnenglu.com/justin-shi/comments/58297.html</wfw:comment><comments>http://m.shnenglu.com/justin-shi/archive/2008/08/08/58297.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/justin-shi/comments/commentRss/58297.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/justin-shi/services/trackbacks/58297.html</trackback:ping><description><![CDATA[1銆佸熀鏈敤娉?br><br>JFileChooser dlg = new JFileChooser();<br>dlg.setDialogTitle("Open JPEG file");<br>int result = dlg.showOpenDialog(this);  // 鎵撳紑"鎵撳紑鏂囦歡"瀵硅瘽妗?br>// int result = dlg.showSaveDialog(this);  // 鎵?寮淇濆瓨鏂囦歡"瀵硅瘽妗?br>if (result == JFileChooser.APPROVE_OPTION) {<br>File file = dlg.getSelectedFile();<br>...<br>}<br><br> <p>2銆佽嚜瀹氫箟FileFilter</p> <p>JDK娌℃湁鎻愪緵榛樿鐨勬枃浠惰繃婊ゅ櫒錛屼絾鎻愪緵浜嗚繃婊ゅ櫒鐨勬娊璞¤秴綾伙紝鎴戜滑鍙互緇ф壙瀹冦?/p> <p>import javax.swing.filechooser.FileFilter;</p> <p>public final class PictureFileFilter extends FileFilter {<br><br>private String extension;<br><br>private String description;</p> <p>public PictureFileFilter(String extension, String description) {<br>super();<br>this.extension = extension;<br>this.description = description;<br>}</p> <p>public boolean accept(File f) {<br>if (f != null) {<br>if (f.isDirectory()) {<br>return true;<br>}<br>String extension = getExtension(f);<br>if (extension != null && extension.equalsIgnoreCase(this.extension)) {<br>return true;<br>}<br>}<br>return false;<br>}</p> <p>public String getDescription() {<br>return description;<br>}</p> <p>private String getExtension(File f) {<br>if (f != null) {<br>String filename = f.getName();<br>int i = filename.lastIndexOf('.');<br>if (i > 0 && i < filename.length() - 1) {<br>return filename.substring(i + 1).toLowerCase();<br>}<br>}<br>return null;<br>}</p> <p>}</p> <p>鍏跺疄涓昏灝辨槸accept(File f)鍑芥暟銆備笂渚嬩腑鍙湁涓涓繃婊ゅ櫒錛屽涓繃婊ゅ櫒鍙弬鑰僇DK鐩綍涓?#8220;demo\jfc\FileChooserDemo\src”涓殑“ExampleFileFilter.java”<br></p> <p><br>3銆佸閫?/p> <p>鍦ㄥ熀鏈敤娉曚腑錛岃緗?/p> <p>c.setMultiSelectionEnabled(true);</p> <p>鍗沖彲瀹炵幇鏂囦歡鐨勫閫夈?/p> <p>璇誨彇閫夋嫨鐨勬枃浠舵椂闇浣跨敤</p> <p>File[] files = c.getSelectedFiles();<br><br></p> <p>4銆侀夋嫨鐩綍</p> <p>鍒╃敤榪欎釜鎵撳紑瀵硅瘽妗嗭紝涓嶄粎鍙互閫夋嫨鏂囦歡錛岃繕鍙互閫夋嫨鐩綍銆?/p> <p>鍏跺疄錛屽璇濇鏈変竴涓狥ileSelectionMode灞炴э紝鍏墮粯璁ゅ間負“JFileChooser.FILES_ONLY”錛屽彧闇瑕佸皢鍏朵慨鏀逛負“JFileChooser.DIRECTORIES_ONLY”鍗沖彲銆?/p> <p>JFileChooser c = new JFileChooser();<br>c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);<br>c.setDialogTitle("Select path to save");<br>int result = c.showOpenDialog(PrintDatetime.this);<br>if (result == JFileChooser.APPROVE_OPTION) {<br>String path = c.getSelectedFile().getAbsolutePath());<br>...<br>}</p> <img src ="http://m.shnenglu.com/justin-shi/aggbug/58297.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/justin-shi/" target="_blank">騫藉菇</a> 2008-08-08 01:38 <a href="http://m.shnenglu.com/justin-shi/archive/2008/08/08/58297.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://by8556.com" target="_blank">久久久久高清</a>| <a href="http://wzlingfeng.com" target="_blank">欧美视频一区二区三区四区</a>| <a href="http://373gg.com" target="_blank">欧美激情国产日韩</a>| <a href="http://fc3332.com" target="_blank">在线观看一区</a>| <a href="http://xgame8.com" target="_blank">欧美激情一区二区三区蜜桃视频</a>| <a href="http://ylsnuha.com" target="_blank">欧美专区在线观看一区</a>| <a href="http://78gde.com" target="_blank">亚洲三级毛片</a>| <a href="http://www8qa.com" target="_blank">在线综合亚洲欧美在线视频</a>| <a href="http://jjoo4.com" target="_blank">国产毛片一区二区</a>| <a href="http://jnjpsm.com" target="_blank">亚洲精品欧美日韩专区</a>| <a href="http://baigoso.com" target="_blank">亚洲深夜激情</a>| <a href="http://6k7a.com" target="_blank">亚洲一区二区三区涩</a>| <a href="http://787282.com" target="_blank">亚洲男人的天堂在线</a>| <a href="http://www-42189.com" target="_blank">国产精品毛片在线看</a>| <a href="http://bdkaoyan.com" target="_blank">欧美一区二区在线看</a>| <a href="http://2343ww.com" target="_blank">免费日韩av</a>| <a href="http://9952222.com" target="_blank">亚洲欧美高清</a>| <a href="http://511caifu.com" target="_blank">久久一区免费</a>| <a href="http://033530.com" target="_blank">亚洲一区影院</a>| <a href="http://dsbangx.com" target="_blank">欧美一区二区三区四区夜夜大片</a>| <a href="http://126film.com" target="_blank">国内精品模特av私拍在线观看</a>| <a href="http://5177jy.com" target="_blank">久久精品99国产精品</a>| <a href="http://baigoso.com" target="_blank">亚洲精品视频免费在线观看</a>| <a href="http://jiuzuifusheng.com" target="_blank">国产精品私拍pans大尺度在线</a>| <a href="http://wwwhhh396.com" target="_blank">久久久成人网</a>| <a href="http://maomi54.com" target="_blank">国产亚洲一区二区三区</a>| <a href="http://ktt2048.com" target="_blank">亚洲精品国产系列</a>| <a href="http://060607.com" target="_blank">韩国三级电影久久久久久</a>| <a href="http://7770790.com" target="_blank">欧美久久在线</a>| <a href="http://344230.com" target="_blank">国产精品国产三级国产专播精品人 </a>| <a href="http://lampreydb.com" target="_blank">久久精品亚洲一区二区三区浴池</a>| <a href="http://17cao8.com" target="_blank">欧美国产综合一区二区</a>| <a href="http://9928k.com" target="_blank">久久精品一区二区三区不卡</a>| <a href="http://660507ww.com" target="_blank">奶水喷射视频一区</a>| <a href="http://ss2ssc.com" target="_blank">久久久国产午夜精品</a>| <a href="http://4379d.com" target="_blank">国产日韩精品一区二区三区在线</a>| <a href="http://xxxxxdywvip18.com" target="_blank">国产麻豆视频精品</a>| <a href="http://tzhsdy.com" target="_blank">在线观看日韩精品</a>| <a href="http://a718sx.com" target="_blank">免费欧美电影</a>| <a href="http://zhiuh.com" target="_blank">影音先锋一区</a>| <a href="http://wwwmm131.com" target="_blank">欧美 日韩 国产一区二区在线视频</a>| <a href="http://cz-sensor.com" target="_blank">久久久久久成人</a>| <a href="http://6hzl8.com" target="_blank">亚洲人成欧美中文字幕</a>| <a href="http://www-36900.com" target="_blank">久久夜色精品国产欧美乱极品</a>| <a href="http://xgame8.com" target="_blank">欧美在线视频免费</a>| <a href="http://www-222kkk.com" target="_blank">在线观看视频一区二区欧美日韩</a>| <a href="http://5yy6.com" target="_blank">99热免费精品在线观看</a>| <a href="http://www51avav.com" target="_blank">激情久久五月</a>| <a href="http://evaporsllc.com" target="_blank">亚洲午夜精品久久</a>| <a href="http://66666556.com" target="_blank">欧美日韩免费高清</a>| <a href="http://zzchanke.com" target="_blank">亚洲永久网站</a>| <a href="http://ywy99.com" target="_blank">亚洲国产精品va在看黑人</a>| <a href="http://0085212.com" target="_blank">亚洲人永久免费</a>| <a href="http://4322333.com" target="_blank">国产精品国产三级国产aⅴ浪潮</a>| <a href="http://erodasy.com" target="_blank">一区二区三区精品视频在线观看</a>| <a href="http://ahqdlq.com" target="_blank">欧美大片免费久久精品三p </a>| <a href="http://456888com.com" target="_blank">亚洲电影毛片</a>| <a href="http://tianxiantxtv.com" target="_blank">亚洲国产合集</a>| <a href="http://85041960.com" target="_blank">欧美激情亚洲综合一区</a>| <a href="http://7788444.com" target="_blank">一区二区电影免费观看</a>| <a href="http://www442222.com" target="_blank">每日更新成人在线视频</a>| <a href="http://yd3399.com" target="_blank">中文亚洲字幕</a>| <a href="http://621767.com" target="_blank">亚洲一品av免费观看</a>| <a href="http://haohetour.com" target="_blank">久久久精品国产免费观看同学</a>| <a href="http://aqdit2022.com" target="_blank">欧美日本免费一区二区三区</a>| <a href="http://a718fun.com" target="_blank">欧美日韩精品二区</a>| <a href="http://www24668.com" target="_blank">欧美伊人久久久久久午夜久久久久</a>| <a href="http://gelaimeiwedding.com" target="_blank">在线播放国产一区中文字幕剧情欧美</a>| <a href="http://alex-bruni.com" target="_blank">国产精品激情av在线播放</a>| <a href="http://winkwink333.com" target="_blank">久久影院午夜片一区</a>| <a href="http://dxmdzz.com" target="_blank">欧美一区二区三区免费视频</a>| <a href="http://yjsp8888.com" target="_blank">亚洲第一二三四五区</a>| <a href="http://9a5x.com" target="_blank">久久久精品五月天</a>| <a href="http://47b8.com" target="_blank">欧美专区亚洲专区</a>| <a href="http://418ch.com" target="_blank">西瓜成人精品人成网站</a>| <a href="http://aqdav037.com" target="_blank">影音欧美亚洲</a>| <a href="http://gmqgw.com" target="_blank">**性色生活片久久毛片</a>| <a href="http://www497171c.com" target="_blank">韩国一区二区三区美女美女秀</a>| <a href="http://xb989.com" target="_blank">国产精品多人</a>| <a href="http://6868681.com" target="_blank">国产在线观看91精品一区</a>| <a href="http://www-xj788.com" target="_blank">国内揄拍国内精品久久</a>| <a href="http://jx963.com" target="_blank">国产精品视频网址</a>| <a href="http://8332777.com" target="_blank">国产一区观看</a>| <a href="http://beeperagain.com" target="_blank">蜜桃av一区二区</a>| <a href="http://www-188444.com" target="_blank">国产精品成人一区二区网站软件</a>| <a href="http://1588vip.com" target="_blank">夜夜嗨av一区二区三区四区</a>| <a href="http://toomicsvip.com" target="_blank">国产手机视频精品</a>| <a href="http://xb735.com" target="_blank">国内揄拍国内精品久久</a>| <a href="http://www-188445.com" target="_blank">亚洲日韩中文字幕在线播放</a>| <a href="http://lgaoxiao.com" target="_blank">亚洲毛片播放</a>| <a href="http://cloakok.com" target="_blank">久久精品99</a>| <a href="http://excellentjy.com" target="_blank">亚洲国内自拍</a>| <a href="http://sdluliang.com" target="_blank">91久久精品视频</a>| <a href="http://lctongda.com" target="_blank">亚洲天堂网站在线观看视频</a>| <a href="http://thisisfil.com" target="_blank">久久国产主播精品</a>| <a href="http://universehb.com" target="_blank">亚洲免费观看视频</a>| <a href="http://belerbb.com" target="_blank">国产精品视频你懂的</a>| <a href="http://www66617.com" target="_blank">亚洲日本在线观看</a>| <a href="http://787299.com" target="_blank">免费欧美在线视频</a>| <a href="http://77777gao.com" target="_blank">国产精品专区第二</a>| <a href="http://nc04.com" target="_blank">99天天综合性</a>| <a href="http://avjj80.com" target="_blank">玖玖在线精品</a>| <a href="http://98956888.com" target="_blank">午夜精品在线看</a>| <a href="http://69kun.com" target="_blank">欧美日本二区</a>| <a href="http://www-136445.com" target="_blank">国产一区二区三区在线观看视频</a>| <a href="http://608u.com" target="_blank">亚洲视频一区二区免费在线观看</a>| <a href="http://388268.com" target="_blank">亚洲第一在线综合网站</a>| <a href="http://baidijs.com" target="_blank">欧美华人在线视频</a>| <a href="http://www-n77.com" target="_blank">亚洲一区二区毛片</a>| <a href="http://13789a.com" target="_blank">蜜桃伊人久久</a>| <a href="http://8eb26.com" target="_blank">午夜精品久久99蜜桃的功能介绍</a>| <a href="http://www94816.com" target="_blank">欧美va亚洲va香蕉在线</a>| <a href="http://writeingo.com" target="_blank">国产精品私拍pans大尺度在线</a>| <a href="http://805185.com" target="_blank">一本色道久久加勒比精品 </a>| <a href="http://www1126v.com" target="_blank">国产精品卡一卡二卡三</a>| <a href="http://wwwcao88.com" target="_blank">亚洲精品一区中文</a>| <a href="http://5177jy.com" target="_blank">亚洲精品视频免费观看</a>| <a href="http://sifeksa.com" target="_blank">亚洲人成7777</a>| <a href="http://www-137999.com" target="_blank">久久亚洲综合网</a>| <a href="http://qcjpns.com" target="_blank">日韩西西人体444www</a>| <a href="http://wwwp6660.com" target="_blank">久久本道综合色狠狠五月</a>| <a href="http://www446168.com" target="_blank">亚洲中字在线</a>| <a href="http://91mdtv.com" target="_blank">国产亚洲精品久久飘花</a>| <a href="http://0999555.com" target="_blank">久久国产精品99国产精</a>| <a href="http://eee104.com" target="_blank">久久一区亚洲</a>| <a href="http://mmpzyw.com" target="_blank">亚洲高清免费</a>| <a href="http://www-78733.com" target="_blank">亚洲国产另类久久精品</a>| <a href="http://bocai4488.com" target="_blank">欧美日韩黄视频</a>| <a href="http://sdmsjd.com" target="_blank">亚洲成人资源网</a>| <a href="http://227237.com" target="_blank">一区二区三区产品免费精品久久75 </a>| <a href="http://vpay1314.com" target="_blank">狠狠色丁香婷婷综合</a>| <a href="http://zunguidq.com" target="_blank">欧美日韩性生活视频</a>| <a href="http://8880850.com" target="_blank">午夜精品国产精品大乳美女</a>| <a href="http://72nnnn.com" target="_blank">久久国产精品网站</a>| <a href="http://by4425.com" target="_blank">红桃视频亚洲</a>| <a href="http://mkaqiu.com" target="_blank">亚洲精品你懂的</a>| <a href="http://cnlbogs.com" target="_blank">久久精品二区亚洲w码</a>| <a href="http://cibocentre.com" target="_blank">国产精品久久久久国产a级</a>| <a href="http://www446168.com" target="_blank">亚洲国产欧洲综合997久久</a>| <a href="http://vvvv81.com" target="_blank">欧美在线视频不卡</a>| <a href="http://81ffff.com" target="_blank">亚洲一区免费观看</a>| <a href="http://www-44442.com" target="_blank">欧美影片第一页</a>| <a href="http://www92444.com" target="_blank">亚洲午夜电影在线观看</a>| <a href="http://188267.com" target="_blank">久久精品官网</a>| <a href="http://114499com.com" target="_blank">欧美国产第二页</a>| <a href="http://xxx6688.com" target="_blank">久久激情视频久久</a>| <a href="http://wanmajc.com" target="_blank">欧美午夜激情小视频</a>| <a href="http://zhuankee.com" target="_blank">欧美风情在线观看</a>| <a href="http://ykk7.com" target="_blank">性做久久久久久久免费看</a>| <a href="http://kedou09.com" target="_blank">国产亚洲在线观看</a>| <a href="http://xb989.com" target="_blank">久久国产精品久久w女人spa</a>| <a href="http://jy920.com" target="_blank">亚洲欧美一区二区三区极速播放</a>| <a href="http://northboiler.com" target="_blank">在线观看日韩av电影</a>| <a href="http://kpd034.com" target="_blank">亚洲欧洲在线一区</a>| <a href="http://9xxpp.com" target="_blank">欧美中在线观看</a>| <a href="http://d1112.com" target="_blank">欧美日韩极品在线观看一区</a>| <a href="http://huokemima.com" target="_blank">狼狼综合久久久久综合网 </a>| <a href="http://tzhsdy.com" target="_blank">国产九色精品成人porny</a>| <a href="http://www284tv.com" target="_blank">久久午夜色播影院免费高清</a>| <a href="http://4006616309.com" target="_blank">欧美日本亚洲韩国国产</a>| <a href="http://345521.com" target="_blank">日韩视频一区</a>| <a href="http://114mz.com" target="_blank">欧美日韩亚洲高清</a>| <a href="http://3737520.com" target="_blank">亚洲大胆人体在线</a>| <a href="http://yw3328.com" target="_blank">亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ </a>| <a href="http://551753.com" target="_blank">亚洲国产日韩一区二区</a>| <a href="http://329374.com" target="_blank">午夜精品久久久久久久蜜桃app</a>| <a href="http://anal-movie-teen.com" target="_blank">美女精品国产</a>| <a href="http://cmtqd.com" target="_blank">亚洲欧美日韩精品</a>| <a href="http://wwwgay456.com" target="_blank">国产性天天综合网</a>| <a href="http://www-57549.com" target="_blank">一区二区三区精品视频在线观看</a>| <a href="http://www668889.com" target="_blank">欧美激情aⅴ一区二区三区</a>| <a href="http://china-cvct.com" target="_blank">亚洲一区二区三区在线视频</a>| <a href="http://aass123.com" target="_blank">影音国产精品</a>| <a href="http://yujiaosanye.com" target="_blank">欧美日韩国产首页</a>| <a href="http://www5566szy.com" target="_blank">亚洲影院免费</a>| <a href="http://jafzjz.com" target="_blank">欧美a级在线</a>| <a href="http://xxx6688.com" target="_blank">亚洲天堂成人在线视频</a>| <a href="http://maiiyou.com" target="_blank">国产日韩一区在线</a>| <a href="http://szbeikai.com" target="_blank">久久精品91</a>| <a href="http://480192.com" target="_blank">亚洲日本免费</a>| <a href="http://shenshijuesheying.com" target="_blank">亚洲午夜在线观看视频在线</a>| <a href="http://9a5x.com" target="_blank">欧美在线播放</a>| <a href="http://216667.com" target="_blank">在线观看亚洲精品视频</a>| <a href="http://kittybob.com" target="_blank">亚洲图片欧洲图片av</a>| <a href="http://9911444.com" target="_blank">亚洲视频一起</a>| <a href="http://cao3e8c8.com" target="_blank">欧美激情在线免费观看</a>| <a href="http://83mmmm.com" target="_blank">欧美国产日本高清在线</a>| <a href="http://www-78733.com" target="_blank">美女主播精品视频一二三四</a>| <a href="http://060969.com" target="_blank">国产欧美韩国高清</a>| <a href="http://buyiker.com" target="_blank">香蕉久久夜色精品</a>| <a href="http://hbdxzx.com" target="_blank">欧美一区二区视频在线</a>| <a href="http://hongmoyi.com" target="_blank">国产精品成人一区二区艾草</a>| <a href="http://91x8.com" target="_blank">亚洲免费大片</a>| <a href="http://057232.com" target="_blank">国产一区日韩二区欧美三区</a>| <a href="http://jm-comic3.com" target="_blank">午夜精品网站</a>| <a href="http://cctbdy.com" target="_blank">久久久久国产成人精品亚洲午夜</a>| <a href="http://4430x.com" target="_blank">久久精品91</a>| <a href="http://kittybob.com" target="_blank">亚洲欧美自拍偷拍</a>| <a href="http://555hhu.com" target="_blank">一本大道久久a久久精二百</a>| <a href="http://avtaobao7788.com" target="_blank">国产日韩高清一区二区三区在线</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>