锘??xml version="1.0" encoding="utf-8" standalone="yes"?>美女福利精品视频,国产精品久久久久aaaa樱花,麻豆成人在线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://yeyesaoqi.com" target="_blank">欧美肥婆bbw</a>| <a href="http://sese912.com" target="_blank">久久久久久**毛片大全</a>| <a href="http://aqdw2021.com" target="_blank">国产人成精品一区二区三</a>| <a href="http://caobenfan1891.com" target="_blank">欧美在线观看天堂一区二区三区</a>| <a href="http://430390.com" target="_blank">一个人看的www久久</a>| <a href="http://hs045.com" target="_blank">国产精品久久网</a>| <a href="http://4106446.com" target="_blank">久久国内精品自在自线400部</a>| <a href="http://725443.com" target="_blank">欧美中在线观看</a>| <a href="http://cnbluebox.com" target="_blank">最新日韩中文字幕</a>| <a href="http://www225011.com" target="_blank">亚洲美女精品成人在线视频</a>| <a href="http://67idid.com" target="_blank">国产精品日本一区二区</a>| <a href="http://v58q.com" target="_blank">久久理论片午夜琪琪电影网</a>| <a href="http://sqms2013.com" target="_blank">欧美h视频在线</a>| <a href="http://994745.com" target="_blank">亚洲天堂av电影</a>| <a href="http://060607.com" target="_blank">欧美一区三区二区在线观看</a>| <a href="http://ynzhuoyi.com" target="_blank">亚洲国产日本</a>| <a href="http://789469.com" target="_blank">亚洲深夜福利视频</a>| <a href="http://132653.com" target="_blank">黑人巨大精品欧美一区二区</a>| <a href="http://ffff53.com" target="_blank">亚洲国产日韩精品</a>| <a href="http://www-72794.com" target="_blank">欧美成人激情视频免费观看</a>| <a href="http://www205sihu.com" target="_blank">亚洲一区二区欧美</a>| <a href="http://223zzz.com" target="_blank">欧美主播一区二区三区美女 久久精品人</a>| <a href="http://223533.com" target="_blank">亚洲精美视频</a>| <a href="http://xingcheny.com" target="_blank">亚洲天天影视</a>| <a href="http://yashikeji.com" target="_blank">亚洲电影免费在线观看</a>| <a href="http://wg135.com" target="_blank">夜夜嗨av色综合久久久综合网</a>| <a href="http://884v.com" target="_blank">国产亚洲综合精品</a>| <a href="http://www38ccc.com" target="_blank">亚洲人成人一区二区三区</a>| <a href="http://qkspvip.com" target="_blank">国产情人节一区</a>| <a href="http://hbstjsgc.com" target="_blank">欧美二区视频</a>| <a href="http://6633kj.com" target="_blank">国产精品视频一区二区高潮</a>| <a href="http://oo853kj.com" target="_blank">欧美成人黑人xx视频免费观看</a>| <a href="http://anal-movie-teen.com" target="_blank">欧美日韩一区二区在线观看视频</a>| <a href="http://988tz.com" target="_blank">久久久精品国产免费观看同学</a>| <a href="http://6623555.com" target="_blank">欧美国产日韩xxxxx</a>| <a href="http://seanzhau.com" target="_blank">欧美一区二区在线看</a>| <a href="http://zw1019.com" target="_blank">欧美成人dvd在线视频</a>| <a href="http://chainhuayu.com" target="_blank">午夜精品久久久久久久白皮肤</a>| <a href="http://25axxa.com" target="_blank">久久综合九色综合欧美狠狠</a>| <a href="http://www-733999.com" target="_blank">亚洲综合色婷婷</a>| <a href="http://220fuke.com" target="_blank">久久尤物电影视频在线观看</a>| <a href="http://86868o.com" target="_blank">亚洲欧美一区二区三区极速播放</a>| <a href="http://www-136445.com" target="_blank">久久综合精品国产一区二区三区</a>| <a href="http://9486322.com" target="_blank">亚洲在线免费</a>| <a href="http://yw9677.com" target="_blank">欧美成人精品不卡视频在线观看</a>| <a href="http://221080.com" target="_blank">欧美一区=区</a>| <a href="http://521531.com" target="_blank">欧美久久久久</a>| <a href="http://47b8.com" target="_blank">美国十次了思思久久精品导航</a>| <a href="http://www-13413.com" target="_blank">国产精品啊啊啊</a>| <a href="http://uuuu79.com" target="_blank">亚洲福利视频三区</a>| <a href="http://qdpetlove.com" target="_blank">国产亚洲激情</a>| <a href="http://6k7a.com" target="_blank">在线一区二区三区做爰视频网站</a>| <a href="http://chinashixin.com" target="_blank">亚洲电影免费在线</a>| <a href="http://huokemima.com" target="_blank">性欧美暴力猛交69hd</a>| <a href="http://choaoxing.com" target="_blank">中文精品99久久国产香蕉</a>| <a href="http://5773000.com" target="_blank">久久久99爱</a>| <a href="http://shaijia123.com" target="_blank">欧美一级欧美一级在线播放</a>| <a href="http://wwww999.com" target="_blank">欧美高清在线视频</a>| <a href="http://zqx186.com" target="_blank">久久亚洲视频</a>| <a href="http://8332777.com" target="_blank">国产精品日本一区二区</a>| <a href="http://cc1024.com" target="_blank">亚洲另类视频</a>| <a href="http://858185gg.com" target="_blank">亚洲激情一区二区</a>| <a href="http://nvpuwo22.com" target="_blank">久久黄色小说</a>| <a href="http://yeedeli.com" target="_blank">欧美一级夜夜爽</a>| <a href="http://0000zz.com" target="_blank">欧美日韩中文另类</a>| <a href="http://7343888.com" target="_blank">欧美激情第8页</a>| <a href="http://junhuatesu.com" target="_blank">黑人巨大精品欧美黑白配亚洲</a>| <a href="http://4006616309.com" target="_blank">亚洲性人人天天夜夜摸</a>| <a href="http://lmjqav.com" target="_blank">一区二区免费在线播放</a>| <a href="http://xdlot.com" target="_blank">免费不卡在线观看</a>| <a href="http://zzztt04.com" target="_blank">开心色5月久久精品</a>| <a href="http://kasimcoal.com" target="_blank">国产精自产拍久久久久久蜜</a>| <a href="http://www668889.com" target="_blank">亚洲日本黄色</a>| <a href="http://72avav.com" target="_blank">亚洲日本视频</a>| <a href="http://77xyc77.com" target="_blank">久久综合网络一区二区</a>| <a href="http://o6186.com" target="_blank">久久久伊人欧美</a>| <a href="http://yc0989.com" target="_blank">国产欧美一区二区精品仙草咪</a>| <a href="http://797298.com" target="_blank">日韩一级免费</a>| <a href="http://7115866.com" target="_blank">99精品视频免费观看</a>| <a href="http://132653.com" target="_blank">狼人天天伊人久久</a>| <a href="http://8w82.com" target="_blank">美女黄毛**国产精品啪啪</a>| <a href="http://by2565.com" target="_blank">国产一区自拍视频</a>| <a href="http://yanuoxun.com" target="_blank">午夜精品av</a>| <a href="http://szywsj.com" target="_blank">欧美一区二区在线免费观看</a>| <a href="http://797298.com" target="_blank">国产精品国产三级国产专播品爱网 </a>| <a href="http://www47067.com" target="_blank">欧美电影美腿模特1979在线看</a>| <a href="http://www36633.com" target="_blank">久久伊人亚洲</a>| <a href="http://5a07.com" target="_blank">国产亚洲欧美中文</a>| <a href="http://312012.com" target="_blank">午夜日韩在线观看</a>| <a href="http://008528.com" target="_blank">欧美在线免费</a>| <a href="http://www-188444.com" target="_blank">国产精品专区一</a>| <a href="http://394141.com" target="_blank">亚洲在线一区二区</a>| <a href="http://luqintang.com" target="_blank">亚洲欧美激情在线视频</a>| <a href="http://678665.com" target="_blank">欧美性猛交99久久久久99按摩</a>| <a href="http://9955377.com" target="_blank">日韩手机在线导航</a>| <a href="http://312012.com" target="_blank">一区二区三区四区五区视频 </a>| <a href="http://yyyy456.com" target="_blank">亚洲精品四区</a>| <a href="http://100736.com" target="_blank">久久在线视频</a>| <a href="http://6k6a.com" target="_blank">女女同性女同一区二区三区91</a>| <a href="http://www-85489.com" target="_blank">精品99一区二区三区</a>| <a href="http://hjersqc.com" target="_blank">久久精品国内一区二区三区</a>| <a href="http://chuangke168.com" target="_blank">久久激情五月丁香伊人</a>| <a href="http://analemi.com" target="_blank">国产日韩在线一区</a>| <a href="http://chaoporn97.com" target="_blank">欧美一级在线亚洲天堂</a>| <a href="http://arielteam.com" target="_blank">久久久91精品国产一区二区精品</a>| <a href="http://580388.com" target="_blank">国产亚洲成av人在线观看导航</a>| <a href="http://lorgou.com" target="_blank">午夜精品久久久久久久白皮肤</a>| <a href="http://f9494.com" target="_blank">欧美在线高清</a>| <a href="http://woshinannan741.com" target="_blank">国产亚洲毛片</a>| <a href="http://sxhrsmjj.com" target="_blank">久久久久国产精品麻豆ai换脸</a>| <a href="http://ctmhotel.com" target="_blank">久久天天躁狠狠躁夜夜爽蜜月</a>| <a href="http://344230.com" target="_blank">狠狠色狠狠色综合日日小说</a>| <a href="http://ju5556.com" target="_blank">久久久噜噜噜久久人人看</a>| <a href="http://080973.com" target="_blank">欧美成人在线免费观看</a>| <a href="http://ydy8.com" target="_blank">亚洲精品欧美精品</a>| <a href="http://teloregen.com" target="_blank">欧美日韩999</a>| <a href="http://pron12.com" target="_blank">99精品视频网</a>| <a href="http://hkjccc.com" target="_blank">亚洲在线播放电影</a>| <a href="http://iietao.com" target="_blank">国产精品一区二区三区四区</a>| <a href="http://kk553.com" target="_blank">先锋影音一区二区三区</a>| <a href="http://mauhorng.com" target="_blank">久久亚洲精品中文字幕冲田杏梨</a>| <a href="http://zgztby.com" target="_blank">精品99一区二区</a>| <a href="http://1355456.com" target="_blank">欧美成人一品</a>| <a href="http://www515678.com" target="_blank">日韩亚洲欧美一区</a>| <a href="http://jigu100.com" target="_blank">午夜精品一区二区三区在线</a>| <a href="http://5456yy.com" target="_blank">国产婷婷色一区二区三区在线 </a>| <a href="http://btbt7086.com" target="_blank">久久国产精品一区二区</a>| <a href="http://xiehaihua.com" target="_blank">国内一区二区三区在线视频</a>| <a href="http://778hao.com" target="_blank">久久亚洲国产精品一区二区</a>| <a href="http://www-442336.com" target="_blank">欧美成人一区二区三区片免费</a>| <a href="http://llamkos.com" target="_blank">日韩一级精品视频在线观看</a>| <a href="http://www-293456.com" target="_blank">欧美三级电影大全</a>| <a href="http://bodabloc.com" target="_blank">亚洲综合三区</a>| <a href="http://caosee.com" target="_blank">久久影院午夜片一区</a>| <a href="http://55555549.com" target="_blank">亚洲人成人99网站</a>| <a href="http://youminwang.com" target="_blank">欧美日韩另类国产亚洲欧美一级</a>| <a href="http://hernameplz.com" target="_blank">宅男在线国产精品</a>| <a href="http://ycgg008.com" target="_blank">久久久久久亚洲精品杨幂换脸</a>| <a href="http://caopormo.com" target="_blank">在线精品国产欧美</a>| <a href="http://193youwu.com" target="_blank">欧美另类一区二区三区</a>| <a href="http://pmref.com" target="_blank">亚洲自拍电影</a>| <a href="http://86311ib.com" target="_blank">免费在线观看精品</a>| <a href="http://080177.com" target="_blank">在线一区二区三区做爰视频网站</a>| <a href="http://chenyirong.com" target="_blank">国产精品入口尤物</a>| <a href="http://gx2020.com" target="_blank">久久一区二区三区国产精品</a>| <a href="http://456888com.com" target="_blank">亚洲日本成人网</a>| <a href="http://wwwby2232.com" target="_blank">欧美一区二区三区在线看</a>| <a href="http://www89999.com" target="_blank">伊人久久亚洲影院</a>| <a href="http://888ppxx.com" target="_blank">欧美日韩精品免费观看视频完整</a>| <a href="http://ae262.com" target="_blank">亚洲欧美区自拍先锋</a>| <a href="http://www-85489.com" target="_blank">免费日韩av</a>| <a href="http://080973.com" target="_blank">中国亚洲黄色</a>| <a href="http://www35353.com" target="_blank">黑人中文字幕一区二区三区</a>| <a href="http://www19829.com" target="_blank">欧美精品在线免费播放</a>| <a href="http://cn1898.com" target="_blank">亚洲欧美综合一区</a>| <a href="http://3bmmtv.com" target="_blank">亚洲大片免费看</a>| <a href="http://3374com.com" target="_blank">午夜精品福利视频</a>| <a href="http://557523.com" target="_blank">亚洲激情欧美</a>| <a href="http://www149aa.com" target="_blank">国产精品外国</a>| <a href="http://376524.com" target="_blank">欧美大片91</a>| <a href="http://xiaofan123.com" target="_blank">午夜精品亚洲</a>| <a href="http://taoseav8.com" target="_blank">亚洲清纯自拍</a>| <a href="http://5757ff.com" target="_blank">久久久久国产一区二区三区四区</a>| <a href="http://6168138.com" target="_blank">亚洲精品一区二区三区在线观看</a>| <a href="http://448968.com" target="_blank">国产精品综合色区在线观看</a>| <a href="http://www3344uh.com" target="_blank">你懂的网址国产 欧美</a>| <a href="http://ym5571.com" target="_blank">亚洲免费视频一区二区</a>| <a href="http://bosengame.com" target="_blank">欧美国产在线电影</a>| <a href="http://mmmm43.com" target="_blank">午夜视频一区二区</a>| <a href="http://49vvvv.com" target="_blank">亚洲日本中文字幕免费在线不卡</a>| <a href="http://taominze.com" target="_blank">国产精品视频精品</a>| <a href="http://77xyc77.com" target="_blank">免费毛片一区二区三区久久久</a>| <a href="http://wwwiqiuxia.com" target="_blank">亚洲天堂黄色</a>| <a href="http://by2866.com" target="_blank">欧美激情性爽国产精品17p</a>| <a href="http://www-76577c.com" target="_blank">欧美亚洲一级片</a>| <a href="http://91pinping.com" target="_blank">亚洲美女免费精品视频在线观看</a>| <a href="http://www-662553.com" target="_blank">国产视频在线观看一区</a>| <a href="http://123-sj.com" target="_blank">欧美久久久久久蜜桃</a>| <a href="http://wwwhaodd116.com" target="_blank">久久精品99国产精品酒店日本</a>| <a href="http://8331651.com" target="_blank">日韩午夜一区</a>| <a href="http://www-72794.com" target="_blank">欧美风情在线观看</a>| <a href="http://qqkanp.com" target="_blank">久久av一区二区</a>| <a href="http://8xxjj.com" target="_blank">亚洲视频在线观看视频</a>| <a href="http://carboarm.com" target="_blank">在线视频国内自拍亚洲视频</a>| <a href="http://analemi.com" target="_blank">国产精品区二区三区日本 </a>| <a href="http://yw1998.com" target="_blank">巨胸喷奶水www久久久免费动漫</a>| <a href="http://www35211.com" target="_blank">亚洲影院在线观看</a>| <a href="http://ewaygou.com" target="_blank">亚洲精品国产无天堂网2021</a>| <a href="http://2220004.com" target="_blank">国产在线高清精品</a>| <a href="http://152mu.com" target="_blank">欧美日韩一区综合</a>| <a href="http://v58q.com" target="_blank">六月婷婷一区</a>| <a href="http://aijiashe.com" target="_blank">欧美综合第一页</a>| <a href="http://94wr.com" target="_blank">亚洲一区二区在线播放</a>| <a href="http://995688.com" target="_blank">亚洲精品视频免费观看</a>| <a href="http://1369080.com" target="_blank">久久久噜久噜久久综合</a>| <a href="http://012488.com" target="_blank">午夜精品久久久久久久99水蜜桃 </a>| <a href="http://862323.com" target="_blank">亚洲高清网站</a>| <a href="http://sdmsjd.com" target="_blank">国产综合精品</a>| <a href="http://gelaimeiwedding.com" target="_blank">国产精品日韩在线</a>| <a href="http://569688.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>