ภาษาอังกฤษภาษาฝรั่งเศสสเปน

Ad


ไอคอน Fav ของ OnWorks

abidiff - ออนไลน์ในคลาวด์

เรียกใช้ abidiff ในผู้ให้บริการโฮสต์ฟรีของ OnWorks ผ่าน Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

นี่คือคำสั่งห้ามที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


abidiff - เปรียบเทียบ ABI ของไฟล์ ELF

abidiff เปรียบเทียบ Application Binary Interfaces (ABI) ของสองไลบรารีที่ใช้ร่วมกันใน เอลฟ์
รูปแบบ. จะส่งรายงานที่มีความหมายซึ่งอธิบายความแตกต่างระหว่าง ABI ทั้งสอง

สำหรับรายงานการเปลี่ยนแปลง ABI ที่ครอบคลุมที่มีการเปลี่ยนแปลงเกี่ยวกับฟังก์ชันและตัวแปร
ชนิดย่อย ไลบรารีที่ใช้ร่วมกันอินพุตทั้งสองต้องมาพร้อมกับข้อมูลการดีบัก
in แคระ รูปแบบ. อย่างอื่นเท่านั้น เอลฟ์ สัญลักษณ์ที่ถูกเพิ่มหรือลบออกจะถูกรายงาน

การร้องขอ


ผู้ยอมจำนน [ตัวเลือก]

OPTIONS


· --ช่วยด้วย | -h

แสดงวิธีใช้สั้นๆ เกี่ยวกับคำสั่งและการออก

· --รุ่น | -v

แสดงเวอร์ชันของโปรแกรมและออก

· --debug-ข้อมูล-dir1 | --d1 <di-path1>

สำหรับกรณีที่ข้อมูลการดีบักสำหรับ ห้องสมุดที่แชร์ครั้งแรก แบ่งออกเป็น
แยกไฟล์บอก อธิบดี จะหาไฟล์ข้อมูลการดีบักแยกต่างหากได้ที่ไหน

โปรดทราบว่า ได-เส้นทาง ต้องชี้ไปที่ไดเร็กทอรีรูทภายใต้ข้อมูลการดีบัก
ถูกจัดวางในลักษณะคล้ายต้นไม้ ภายใต้ระบบที่ใช้ Red Hat ไดเร็กทอรีนั้นคือ
มักจะ /usr/lib/debug.

โปรดทราบว่าตัวเลือกนี้ไม่จำเป็นสำหรับข้อมูลดีบักแยกที่ติดตั้งโดย
ตัวจัดการแพ็คเกจของระบบของคุณเพราะแล้ว อธิบดี รู้ว่าจะหาได้ที่ไหน

· --debug-ข้อมูล-dir2 | --d2 <di-path2>

Like --debug-ข้อมูล-dir1, ตัวเลือกนี้บอก อธิบดี จะหาการดีบักแยกได้ที่ไหน
ข้อมูลสำหรับ Second-shared-library ไฟล์

· --สถิติ

แทนที่จะแสดงรายละเอียดความแตกต่างของ ABI ระหว่าง ห้องสมุดที่แชร์ครั้งแรก และ
Second-shared-libraryเพียงแสดงสถิติสรุปเกี่ยวกับความแตกต่างเหล่านี้

· --แท็บสัญลักษณ์

แสดงเฉพาะตารางสัญลักษณ์ของ ห้องสมุดที่แชร์ครั้งแรก และ Second-shared-library.

· --ลบแล้ว-fns

ในรายงานผลความแตกต่างระหว่าง ห้องสมุดที่แชร์ครั้งแรก และ
Second-shared-library, แสดงเฉพาะฟังก์ชั่นที่กำหนดทั่วโลกที่ถูกลบ
ราคาเริ่มต้นที่ ห้องสมุดที่แชร์ครั้งแรก.

· --change-fns

ในรายงานผลความแตกต่างระหว่าง ห้องสมุดที่แชร์ครั้งแรก และ
Second-shared-library, แสดงเฉพาะการเปลี่ยนแปลงในประเภทย่อยของฟังก์ชันส่วนกลาง
กำหนดไว้ใน ห้องสมุดที่แชร์ครั้งแรก.

· --เพิ่ม-fns

ในรายงานผลความแตกต่างระหว่าง ห้องสมุดที่แชร์ครั้งแรก และ
Second-shared-library, แสดงเฉพาะฟังก์ชันที่กำหนดทั่วโลกที่เพิ่มลงใน
Second-shared-library.

· --ลบ-vars

ในรายงานผลความแตกต่างระหว่าง ห้องสมุดที่แชร์ครั้งแรก และ
Second-shared-library, แสดงเฉพาะตัวแปรที่กำหนดทั่วโลกที่ถูกลบไปแล้ว
ราคาเริ่มต้นที่ ห้องสมุดที่แชร์ครั้งแรก.

· --change-vars

ในรายงานผลความแตกต่างระหว่าง ห้องสมุดที่แชร์ครั้งแรก และ
Second-shared-library, แสดงเฉพาะการเปลี่ยนแปลงในประเภทย่อยของ global
ตัวแปรที่กำหนดไว้ใน ห้องสมุดที่แชร์ครั้งแรก

· --เพิ่ม-vars

ในรายงานผลความแตกต่างระหว่าง ห้องสมุดที่แชร์ครั้งแรก และ
Second-shared-libraryแสดงเฉพาะตัวแปรส่วนกลางที่เพิ่ม (กำหนด) ลงใน
Second-shared-library.

· --no-linkage-ชื่อ

ในรายงานผลลัพธ์ ห้ามแสดงชื่อการเชื่อมโยงของการเพิ่ม ลบ หรือ
ฟังก์ชันหรือตัวแปรที่เปลี่ยนแปลง

· --no-แสดง-locs
อย่าแสดงข้อมูลเกี่ยวกับตำแหน่งใน ที่สอง ที่ใช้ร่วมกัน ห้องสมุด ตามลำดับ
เปลี่ยนประเภทแล้ว

· --no-unreferenced-สัญลักษณ์

ในรายงานผลลัพธ์ ห้ามแสดงข้อมูลการเปลี่ยนแปลงเกี่ยวกับฟังก์ชันและ
สัญลักษณ์ตัวแปรที่ไม่ได้อ้างอิงโดยข้อมูลการดีบักใดๆ โปรดทราบว่าสำหรับ
สัญลักษณ์เหล่านี้ไม่ได้อ้างอิงโดยข้อมูลการแก้ไขข้อบกพร่องใด ๆ ข้อมูลการเปลี่ยนแปลง
แสดงเป็นทั้งเพิ่มหรือลบสัญลักษณ์

· --ปราบปราม | --สนับสนุน <เส้นทางสู่การปราบปราม>

ใช้ไฟล์ข้อกำหนดการปราบปรามที่อยู่ที่ เส้นทางสู่การปราบปราม. โปรดทราบว่าสิ่งนี้
ตัวเลือกสามารถปรากฏได้หลายครั้งบนบรรทัดคำสั่ง การปราบปรามทั้งหมด
ไฟล์ข้อมูลจำเพาะจะถูกนำมาพิจารณา

· --หยด <นิพจน์ทั่วไป>

เมื่ออ่าน ห้องสมุดที่แชร์ครั้งแรก และ Second-shared-library ไฟล์อินพุตเอลฟ์, ดรอป
ฟังก์ชันและตัวแปรที่กำหนดไว้ทั่วโลกซึ่งชื่อตรงกับนิพจน์ทั่วไป
นิพจน์ทั่วไป. เป็นผลให้ไม่มีการเปลี่ยนแปลงที่เกี่ยวข้องกับฟังก์ชันหรือตัวแปรเหล่านี้จะถูกปล่อยออกมา
ในรายงานผลต่าง

· --drop-fn <นิพจน์ทั่วไป>

เมื่ออ่าน ห้องสมุดที่แชร์ครั้งแรก และ Second-shared-library ไฟล์อินพุตเอลฟ์, ดรอป
ฟังก์ชันที่กำหนดไว้ทั่วโลกซึ่งชื่อตรงกับนิพจน์ทั่วไป นิพจน์ทั่วไป. ในฐานะที่เป็น
ผลลัพธ์จะไม่มีการเปลี่ยนแปลงที่เกี่ยวข้องกับฟังก์ชันเหล่านี้ในรายงานส่วนต่าง

· --drop-var <นิพจน์ทั่วไป>

เมื่ออ่าน ห้องสมุดที่แชร์ครั้งแรก และ Second-shared-library ไฟล์อินพุตเอลฟ์, ดรอป
ตัวแปรที่กำหนดไว้ทั่วโลกตรงกับนิพจน์ทั่วไป นิพจน์ทั่วไป.

· --เก็บไว้ <นิพจน์ทั่วไป>

เมื่ออ่าน ห้องสมุดที่แชร์ครั้งแรก และ Second-shared-library ไฟล์อินพุต ELF, เก็บ
ฟังก์ชันและตัวแปรที่กำหนดไว้ทั่วโลกซึ่งชื่อตรงกับนิพจน์ทั่วไป
นิพจน์ทั่วไป. ฟังก์ชันและตัวแปรอื่น ๆ ทั้งหมดจะหล่นลงบนพื้นและจะไม่
ปรากฏในรายงานผลต่างที่เป็นผลลัพธ์

· --เก็บ-fn <นิพจน์ทั่วไป>

เมื่ออ่าน ห้องสมุดที่แชร์ครั้งแรก และ Second-shared-library ไฟล์อินพุต ELF, เก็บ
ฟังก์ชันที่กำหนดไว้ทั่วโลกซึ่งชื่อตรงกับนิพจน์ทั่วไป นิพจน์ทั่วไป. ทั้งหมด
ฟังก์ชันอื่นๆ หล่นลงบนพื้นและจะไม่ปรากฏในผลลัพธ์
รายงานต่าง

· --เก็บ-var <นิพจน์ทั่วไป>

เมื่ออ่าน ห้องสมุดที่แชร์ครั้งแรก และ Second-shared-library ไฟล์อินพุต ELF, เก็บ
กำหนดทั่วโลกซึ่งชื่อตรงกับนิพจน์ทั่วไป นิพจน์ทั่วไป. อื่น ๆ ทั้งหมด
ตัวแปรถูกทิ้งลงบนพื้นและจะไม่ปรากฏในค่า diff . ที่เป็นผลลัพธ์
แจ้ง

· --ไม่เป็นอันตราย

ในรายงานผลต่าง แสดงเฉพาะการเปลี่ยนแปลงที่ไม่เป็นอันตราย โดยค่าเริ่มต้นที่ไม่เป็นอันตราย
การเปลี่ยนแปลงจะถูกกรองออกจากรายงานส่วนต่าง ให้มีความยุ่งเหยิงน้อยที่สุดและมี
การเปลี่ยนแปลงที่มากขึ้นเพื่อระบุปัญหา ABI ที่แท้จริง

· --ไม่เป็นอันตราย

ในรายงานส่วนต่าง อย่าแสดงการเปลี่ยนแปลงที่เป็นอันตราย โดยค่าเริ่มต้น อันตรายเท่านั้น
การเปลี่ยนแปลงจะแสดงในรายงานต่าง

· --ซ้ำซ้อน

ในรายงานส่วนต่าง ให้แสดงการเปลี่ยนแปลงที่ซ้ำซ้อน การเปลี่ยนแปลงซ้ำซากคือการเปลี่ยนแปลง
ที่ได้แสดงไว้ที่อื่นในรายงาน

· --no-ซ้ำซ้อน

ในรายงานผลต่าง ทำ ไม่ แสดงการเปลี่ยนแปลงซ้ำซ้อน การเปลี่ยนแปลงซ้ำซากคือการเปลี่ยนแปลง
ที่ได้แสดงไว้ที่อื่นในรายงาน ตัวเลือกนี้ถูกเปิดโดย
ค่าเริ่มต้น.

· --ไม่มีสถาปัตยกรรม

อย่าคำนึงถึงสถาปัตยกรรมเมื่อเปรียบเทียบ ABI

· --dump-diff-ต้นไม้
หลังจากรายงาน diff ให้ส่งการแสดงข้อความของแผนผังโหนดต่างที่ใช้โดย
เครื่องมือเปรียบเทียบเพื่อแสดงฟังก์ชันและตัวแปรที่เปลี่ยนแปลง ที่
การแสดงจะถูกส่งไปยังเอาต์พุตข้อผิดพลาดเพื่อจุดประสงค์ในการดีบัก สังเกตว่า
ทรีดิฟนี้เกี่ยวข้องเฉพาะกับฟังก์ชันและตัวแปรที่มีบางประเภทย่อย
การเปลี่ยนแปลง ฟังก์ชันและตัวแปรที่เพิ่มหรือลบออกไม่มีโหนดที่ต่างกัน
ที่เกี่ยวข้องกับพวกเขา

· --สถิติ

ปล่อยสถิติเกี่ยวกับสิ่งของภายในต่างๆ

· --รายละเอียด

ปล่อยบันทึกอย่างละเอียดเกี่ยวกับความคืบหน้าของสิ่งต่าง ๆ ภายใน

กลับ VALUES


รหัสทางออกของ อธิบดี คำสั่งเป็น 0 หาก ABI ของไบนารีถูกเปรียบเทียบ
เท่ากันหรือไม่เป็นศูนย์หากต่างกันหรือหากเครื่องมือพบข้อผิดพลาด

ในกรณีต่อมา รหัสออกคือฟิลด์บิตกว้าง 8 บิต โดยแต่ละบิตมี a
ความหมายเฉพาะ

บิตแรก ของค่า 1 ชื่อ ABIDIFF_ERROR หมายความว่ามีข้อผิดพลาด

บิตที่สอง ของค่า 2 ชื่อ ABIDIFF_USAGE_ERROR หมายความว่ามีข้อผิดพลาดในทาง
ผู้ใช้เรียกใช้เครื่องมือ อาจมีการตั้งค่า เช่น หากผู้ใช้เรียกใช้เครื่องมือ
ด้วยสวิตช์บรรทัดคำสั่งที่ไม่รู้จัก ด้วยตัวเลขหรืออาร์กิวเมนต์ที่ไม่ถูกต้อง ฯลฯ หากบิตนี้เป็น
ตั้งค่าแล้ว ABIDIFF_ERROR ต้องตั้งค่า bit ด้วย

บิตที่สาม ของค่า 4 ชื่อ ABIDIFF_ABI_CHANGE หมายถึง ABI ของไบนารีที่เป็น
เปรียบเทียบก็ต่างกัน

บิตที่สี่ของค่า 8 ชื่อ ABIDIFF_ABI_INCOMPATIBLE_CHANGE หมายถึง ABI ของ
การเปรียบเทียบไบนารีนั้นแตกต่างกันในทางที่เข้ากันไม่ได้ หากบิตนี้ถูกตั้งค่าแล้ว
ABIDIFF_ABI_CHANGE ต้องตั้งค่า bit ด้วย ถ้า ABIDIFF_ABI_CHANGE ถูกตั้งค่าและ
ABIDIFF_INCOMPATIBLE_CHANGE is ไม่ กำหนดก็หมายความว่า ABIs ที่เปรียบเทียบอาจ
หรืออาจจะเข้ากันไม่ได้ ในกรณีนั้น มนุษย์จำเป็นต้องตรวจสอบการเปลี่ยนแปลงของ ABI
เพื่อตัดสินใจว่าจะเข้ากันได้หรือไม่

บิตที่เหลือไม่ได้ใช้ในขณะนี้

การใช้ ตัวอย่าง


1. การตรวจจับการเปลี่ยนแปลงในประเภทย่อยของฟังก์ชัน:

$ cat -n ทดสอบ v0.cc
1 // รวบรวมสิ่งนี้ด้วย:
2 // g++ -g -Wall -shared -o libtest-v0.so ทดสอบ v0.cc
3
4 โครงสร้าง S0
5 {
6 นิ้ว m0;
7 };
8
9 โมฆะ
10 fo(S0* /*parameter_name*/)
11 {
12 // ทำอะไรบางอย่างกับ Parameter_name
13}
$
$ cat -n ทดสอบ v1.cc
1 // รวบรวมสิ่งนี้ด้วย:
2 // g++ -g -Wall -shared -o libtest-v1.so ทดสอบ v1.cc
3
4 โครงสร้าง type_base
5 {
แทรก 6 int;
7 };
8
9 struct S0 : สาธารณะ type_base
10 {
11 นิ้ว m0;
12 };
13
14 โมฆะ
15 fo(S0* /*parameter_name*/)
16 {
17 // ทำอะไรบางอย่างกับ Parameter_name
18}
$
$ g++ -g -Wall -shared -o libtest-v0.so ทดสอบ v0.cc
$ g++ -g -Wall -shared -o libtest-v1.so ทดสอบ v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
ฟังก์ชันการเปลี่ยนแปลงสรุป: 0 ลบ 1 เปลี่ยนแปลง 0 เพิ่มฟังก์ชัน
ตัวแปรการเปลี่ยนแปลงสรุป: 0 ลบ, 0 เปลี่ยนแปลง, 0 เพิ่มตัวแปร

1 ฟังก์ชั่นที่มีการเปลี่ยนแปลงประเภทย่อยทางอ้อม:

[C]'function void foo(S0*)' มีการเปลี่ยนแปลงประเภทย่อยทางอ้อม:
พารามิเตอร์ 0 ของประเภท 'S0*' มีการเปลี่ยนแปลงประเภทย่อย:
ชี้ไปที่ประเภท 'struct S0':
ขนาดเปลี่ยนจาก 32 เป็น 64 บิต
1 การแทรกคลาสฐาน:
โครงสร้าง type_base
การเปลี่ยนแปลงสมาชิกข้อมูล 1 รายการ:
ออฟเซ็ต 'int S0::m0' เปลี่ยนจาก 0 เป็น 32
$

2. การตรวจจับการเปลี่ยนแปลงอื่นในประเภทย่อยของฟังก์ชัน:

$ cat -n ทดสอบ v0.cc
1 // รวบรวมสิ่งนี้ด้วย:
2 // g++ -g -Wall -shared -o libtest-v0.so ทดสอบ v0.cc
3
4 โครงสร้าง S0
5 {
6 นิ้ว m0;
7 };
8
9 โมฆะ
10 foo(S0& /*parameter_name*/)
11 {
12 // ทำอะไรบางอย่างกับ Parameter_name
13}
$
$ cat -n ทดสอบ v1.cc
1 // รวบรวมสิ่งนี้ด้วย:
2 // g++ -g -Wall -shared -o libtest-v1.so ทดสอบ v1.cc
3
4 โครงสร้าง S0
5 {
6 อักขระ inserted_member;
7 นิ้ว m0;
8 };
9
10 โมฆะ
11 foo(S0& /*parameter_name*/)
12 {
13 // ทำอะไรบางอย่างกับ Parameter_name
14}
$
$ g++ -g -Wall -shared -o libtest-v0.so ทดสอบ v0.cc
$ g++ -g -Wall -shared -o libtest-v1.so ทดสอบ v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
ฟังก์ชันการเปลี่ยนแปลงสรุป: 0 ลบ 1 เปลี่ยนแปลง 0 เพิ่มฟังก์ชัน
ตัวแปรการเปลี่ยนแปลงสรุป: 0 ลบ, 0 เปลี่ยนแปลง, 0 เพิ่มตัวแปร

1 ฟังก์ชั่นที่มีการเปลี่ยนแปลงประเภทย่อยทางอ้อม:

[C]'function void foo(S0&)' มีการเปลี่ยนแปลงประเภทย่อยทางอ้อม:
พารามิเตอร์ 0 ของประเภท 'S0&' มีการเปลี่ยนแปลงประเภทย่อย:
ในประเภทอ้างอิง 'struct S0':
ขนาดเปลี่ยนจาก 32 เป็น 64 บิต
การแทรกสมาชิกข้อมูล 1 รายการ:
'char S0::inserted_member' ที่ออฟเซ็ต 0 (เป็นบิต)
การเปลี่ยนแปลงสมาชิกข้อมูล 1 รายการ:
ออฟเซ็ต 'int S0::m0' เปลี่ยนจาก 0 เป็น 32

$

3. การตรวจจับว่าฟังก์ชันถูกลบหรือเพิ่มในไลบรารี:

$ cat -n ทดสอบ v0.cc
1 // รวบรวมสิ่งนี้ด้วย:
2 // g++ -g -Wall -shared -o libtest-v0.so ทดสอบ v0.cc
3
4 โครงสร้าง S0
5 {
6 นิ้ว m0;
7 };
8
9 โมฆะ
10 foo(S0& /*parameter_name*/)
11 {
12 // ทำอะไรบางอย่างกับ Parameter_name
13}
$
$ cat -n ทดสอบ v1.cc
1 // รวบรวมสิ่งนี้ด้วย:
2 // g++ -g -Wall -shared -o libtest-v1.so ทดสอบ v1.cc
3
4 โครงสร้าง S0
5 {
6 อักขระ inserted_member;
7 นิ้ว m0;
8 };
9
10 โมฆะ
11 บาร์(S0& /*parameter_name*/)
12 {
13 // ทำอะไรบางอย่างกับ Parameter_name
14}
$
$ g++ -g -Wall -shared -o libtest-v0.so ทดสอบ v0.cc
$ g++ -g -Wall -shared -o libtest-v1.so ทดสอบ v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
สรุปการเปลี่ยนแปลงฟังก์ชัน: 1 ถูกลบ, 0 เปลี่ยนแปลง, 1 เพิ่มฟังก์ชัน
ตัวแปรการเปลี่ยนแปลงสรุป: 0 ลบ, 0 เปลี่ยนแปลง, 0 เพิ่มตัวแปร

1 ลบฟังก์ชัน:
'ฟังก์ชันเป็นโมฆะ foo (S0&)' {_Z3fooR2S0}

1 เพิ่มฟังก์ชัน:
'ฟังก์ชันโมฆะบาร์ (S0&)' {_Z3barR2S0}

$

ใช้ abidiff ออนไลน์โดยใช้บริการ onworks.net


เซิร์ฟเวอร์และเวิร์กสเตชันฟรี

ดาวน์โหลดแอพ Windows & Linux

  • 1
    เฟซแทร็กนัวร์
    เฟซแทร็กนัวร์
    โปรแกรม headtracking แบบโมดูลาร์นั้น
    รองรับตัวติดตามใบหน้าและตัวกรองหลายตัว
    และเกมโปรโตคอล ในบรรดาผู้ติดตาม
    คือ SM FaceAPI, AIC Inertial Head
    ติดตาม ...
    ดาวน์โหลด facetracknoir
  • 2
    PHP คิวอาร์โค้ด
    PHP คิวอาร์โค้ด
    PHP QR Code เป็นโอเพ่นซอร์ส (LGPL)
    ห้องสมุดสำหรับสร้างรหัส QR,
    บาร์โค้ด 2 มิติ ขึ้นอยู่กับ
    ไลบรารี libqrencode C จัดเตรียม API สำหรับ
    การสร้างบาร์โค้ด QR Code...
    ดาวน์โหลด PHP QR Code
  • 3
    freeciv
    freeciv
    Freeciv เป็นเกมเทิร์นเบสฟรี
    เกมกลยุทธ์แบบผู้เล่นหลายคนซึ่งในแต่ละ
    ผู้เล่นกลายเป็นผู้นำของa
    อารยธรรมต่อสู้เพื่อให้ได้
    เป้าหมายสูงสุด : เป็น...
    ดาวน์โหลด Freeciv
  • 4
    แซนด์บ็อกซ์นกกาเหว่า
    แซนด์บ็อกซ์นกกาเหว่า
    Cuckoo Sandbox ใช้ส่วนประกอบเพื่อ
    ตรวจสอบพฤติกรรมของมัลแวร์ใน
    สภาพแวดล้อมแบบแซนด์บ็อกซ์ แยกได้จาก
    ส่วนที่เหลือของระบบ ให้บริการแบบอัตโนมัติ
    วิเคราะห์เ...
    ดาวน์โหลด Cuckoo Sandbox
  • 5
    LMS-YouTube
    LMS-YouTube
    เล่นวิดีโอ YouTube บน LMS (พอร์ตของ
    Triode ของ YouTbe API v3) นี่คือ
    แอปพลิเคชันที่สามารถดึงข้อมูลได้
    ราคาเริ่มต้นที่
    https://sourceforge.net/projects/lms-y...
    ดาวน์โหลด LMS-YouTube
  • 6
    มูลนิธิการนำเสนอ Windows
    มูลนิธิการนำเสนอ Windows
    มูลนิธิการนำเสนอ Windows (WPF)
    เป็นเฟรมเวิร์ก UI สำหรับสร้าง Windows
    แอปพลิเคชันเดสก์ท็อป WPF รองรับ a
    การพัฒนาแอพพลิเคชั่นในวงกว้าง
    คุณสมบัติ ...
    ดาวน์โหลด Windows Presentation Foundation
  • เพิ่มเติม»

คำสั่ง Linux

Ad