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

Ad


ไอคอน Fav ของ OnWorks

create-native-map - ออนไลน์ใน Cloud

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

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

โครงการ:

ชื่อ


create-native-map - ผู้สร้างแผนที่ C/C#

เรื่องย่อ


สร้างแผนที่พื้นเมือง [ตัวเลือก]* ASSEMBLY-FILE-NAME OUPUT-PREFIX

OPTIONS


--autoconf-header=HEADER
HEADER เป็นชื่อไฟล์ส่วนหัวในรูปแบบที่มักใช้กับ C #include
คำสั่งเช่น #include or #include "local.h" .

มาโครที่จัดรูปแบบ Autoconf สร้างขึ้นจากชื่อที่รวมและa #include
คำสั่งถูกห่อด้วย a #ifdef บล็อกสำหรับแมโคร Autoconf ภายใน
สร้าง .c ไฟล์

ตัวอย่างเช่น --autoconf-header= จะสร้างรหัส:

#ifndef HAVE_STDIO_H
#รวม
#endif /* ndef HAVE_STDIO_H */

--autoconf-member=สมาชิก
ระบุว่าการเข้าถึงใด ๆ สมาชิก ควรห่อภายใน a #ifdef มี_สมาชิก
กลุ่ม สมาชิก สามารถเป็นได้ทั้ง a ชื่อสนาม หรือ ชื่อคลาส . ชื่อสนาม
การรวมกัน

ตัวอย่างเช่น จากการประกาศ C#:

[Mono.Unix.Native.Map ("struct dirent")]
โครงสร้าง Dirent {
d_off ยาวสาธารณะ;
}

แล้วก็ --autoconf-สมาชิก=d_off จะสร้างรหัสคล้ายกับ:

int
ToDirent (struct dirent *จาก, struct Dirent *เป็น)
{
#ifdef HAVE_STRUCT_DIRENT_D_OFF
ถึง ->d_off = จาก ->d_off;
#endif /* ndef HAVE_STRUCT_DIRENT_D_OFF */
}

--exclude-native- symbol=SYMBOL
SYMBOL คือ [นำเข้า Dll] -ทำเครื่องหมายวิธีที่ควร ไม่ มีการสร้างต้นแบบ
สำหรับมัน

--impl-ส่วนหัว = ส่วนหัว
แทรกไฟล์ #include คำสั่งภายในที่สร้างขึ้น .c ไฟล์ HEADER .

ตัวอย่างเช่น --impl-header= สร้าง

# รวม

--impl-มาโคร=MACRO
แทรกไฟล์ #กำหนด คำสั่งภายในที่สร้างขึ้น .c ไฟล์ มาโคร สามารถมี = ไปยัง
แยกชื่อมาโครออกจากค่ามาโคร

ตัวอย่างเช่น --impl-มาโคร=FOO=42 สร้าง

#กำหนด FOO 42

--library=ห้องสมุด
สร้างต้นแบบสำหรับ [นำเข้า Dll] -ทำเครื่องหมายวิธีการซึ่งอ้างอิงถึงภาษาพื้นเมือง
ห้องสมุด ห้องสมุด ในการสร้าง .h ไฟล์

--public-header=HEADER
แทรกไฟล์ #include คำสั่งภายในที่สร้างขึ้น .h ไฟล์ HEADER .

ตัวอย่างเช่น --public-header= สร้าง

# รวม

--public-macro=MACRO
แทรกไฟล์ #กำหนด คำสั่งภายในที่สร้างขึ้น .h ไฟล์ มาโคร สามารถมี = ไปยัง
แยกชื่อมาโครออกจากค่ามาโคร

ตัวอย่างเช่น --public-มาโคร=FOO=42 สร้าง

#กำหนด FOO 42

--เปลี่ยนชื่อสมาชิก=FROM=TO
ใช้เมื่อ จาก เป็นมาโคร C จึงต้องปรับเปลี่ยนเพื่อใช้งาน
มีสติ การอ้างอิงที่สร้างขึ้นทั้งหมดไปยังการแสดงที่มีการจัดการจะใช้ TO แทน
of จาก .

ตัวอย่างเช่น จากการประกาศ C#:

[Mono.Unix.Native.Map ("สถิติโครงสร้าง")]
โครงสร้างสถิติ {
สาธารณะ st_atime ยาว;
}

และข้อโต้แย้ง --เปลี่ยนชื่อสมาชิก=st_atime=st_atime_ , ที่สร้างขึ้น .h ไฟล์จะ
ประกอบด้วย:

โครงสร้างสถิติ {
gint64 st_atime_;
};

(สังเกตชื่อฟิลด์ที่เปลี่ยนแปลง) ในขณะที่ไฟล์ที่ถูกสร้างขึ้น .c ไฟล์จะมี:

ToStat (สถิติโครงสร้าง *จาก, โครงสร้างสถิติ *เป็น)
{
ถึง ->st_atime_ = จาก ->st_atime;
}

--เปลี่ยนชื่อ-namespace=FROM=TO
โดยค่าเริ่มต้น C "เนมสเปซ" (สัญลักษณ์นำหน้า) คือเนมสเปซ C#; ประเภทภายใน
C# เนมสเปซ โมโน Unix พื้นเมือง จะอยู่ใน C "เนมสเปซ" Mono_Unix_Native . ใช้
--เปลี่ยนชื่อ-เนมสเปซ เพื่อแก้ไขค่าเริ่มต้นเช่น --เปลี่ยนชื่อ-
เนมสเปซ=Mono.Unix.Native=Mono_Posix .

DESCRIPTION


สร้างแผนที่พื้นเมือง เป็นโปรแกรมสำหรับสถานการณ์เฉพาะ: การเก็บรหัสที่แน่น
ควบคู่ระหว่าง C และ C# ที่ซิงค์กันตามประเภท C#

Platform Invoke จะมีประโยชน์ก็ต่อเมื่อโค้ดที่ได้รับการจัดการรู้ประเภทและเลย์เอาต์ที่แน่นอนของทั้งหมด
โครงสร้างที่ไม่มีการจัดการที่ใช้ ซึ่งมักจะเป็นกรณีนี้ใน Windows แต่ก็เป็น ไม่ กรณี
บนยูนิกซ์ ตัวอย่างเช่น, โครงสร้าง stat ทำให้ใช้ประเภทที่มีขนาดแตกต่างกันไปตั้งแต่
แพลตฟอร์มต่อแพลตฟอร์ม (หรือแม้แต่ตามมาโครคอมไพเลอร์ที่กำหนดไว้!) ตัวอย่างเช่น, ปิด_t
มักจะเป็นจำนวนเต็ม 32 บิตที่ลงนามบนแพลตฟอร์ม ILP32 แต่อาจเป็นจำนวนเต็ม 64 บิตที่ลงนาม
บนแพลตฟอร์ม LP64 แต่อาจเป็นจำนวนเต็มที่ลงนาม 64 บิตบนแพลตฟอร์ม ILP32 หาก
_FILE_OFFSET_BITS มาโครมีค่า 64 กล่าวโดยย่อทุกอย่างมีความยืดหยุ่นภายใน Unix
และโค้ดที่ได้รับการจัดการไม่สามารถจัดการกับความยืดหยุ่นดังกล่าวได้

ดังนั้น ช่องสำหรับ สร้างแผนที่พื้นเมือง : ถือว่า ABI คงที่ซึ่งโค้ดที่ได้รับการจัดการสามารถกำหนดเป้าหมายได้
และสร้างรหัสเพื่อ "thunk" การแสดงที่มีการจัดการไปยังเจ้าของภาษาที่เกี่ยวข้อง
การเป็นตัวแทน ต้องทำเพื่อ ทุกอย่าง ที่สามารถเปลี่ยนแปลงได้ระหว่างแพลตฟอร์มและ
แฟล็กคอมไพเลอร์ จากการแจงนับค่า ( ซิกบัส มีค่า 10 บน FreeBSD แต่ 7 บน
Linux) เป็นโครงสร้างสมาชิก (ใหญ่แค่ไหน ปิด_t ?)

สร้างแผนที่พื้นเมือง จะตรวจสอบ ASSEMBLY-FILE-NAME และส่งออกไฟล์ต่อไปนี้:

เอาท์พุท-คำนำหน้าh
ประกอบด้วยค่าการแจงนับ ประกาศคลาสและโครงสร้าง delegate
ประกาศและ [นำเข้า Dll] -marked method (จากไลบรารีที่ระบุโดย
--ห้องสมุด ) ภายในสภา ASSEMBLY-FILE-NAME .

เอาท์พุท-PREFIX.c
ประกอบด้วยการดำเนินการแจงนับและการแปลงโครงสร้าง
ฟังก์ชั่น

เอาท์พุท-PREFIX.cs
ประกอบด้วยคลาสบางส่วน NativeConvert ที่มีการแปลแจงนับ
วิธีการ

เอาต์พุต-PREFIX.xml
สร้างสตับเอกสาร ECMA XML สำหรับการแปลแจงนับ
วิธีการใน เอาท์พุท-PREFIX.cs .

สร้างแผนที่พื้นเมือง ส่วนใหญ่มองหา แผนที่แอตทริบิวต์ -ตกแต่งแบบและใช้สองอย่าง
แผนที่แอตทริบิวต์ คุณสมบัติ:

ประเภทพื้นเมือง
ประกอบด้วยประเภท C ที่สอดคล้องกัน มีประโยชน์เฉพาะเมื่อนำไปใช้กับชั้นเรียน
โครงสร้างและสนาม

ระงับธง
เมื่อระบุไว้ในสมาชิกการแจงนับของ a [ธง] - การแจงนับตกแต่ง
ประเภท, คนพิการ ตัวสร้างโค้ดปกติรองรับการแจงนับบิตมาสก์
ประเภท

สิ่งนี้มีประโยชน์เมื่อข้อมูลบิตมาสก์และไม่ใช่บิตมาสก์ถูกเก็บไว้ภายใน
ชนิดเดียวกัน และไม่ควรใช้การตรวจสอบบิตมาสก์สำหรับไม่ใช่บิตมาสก์
ค่านิยม ตัวอย่าง: Mono.Unix.Native.FilePermissions.S_IFREG ซึ่งไม่ใช่
ค่าบิตมาสก์ในขณะที่ส่วนใหญ่ สิทธิ์ของไฟล์ ประกอบด้วยค่าบิตมาสก์ (
สิทธิ์ของไฟล์S_IRUSR , สิทธิ์ของไฟล์S_IWUSR ฯลฯ )

พื้นที่ แผนที่แอตทริบิวต์ สามารถระบุแอตทริบิวต์ในคลาส โครงสร้าง ผู้รับมอบสิทธิ์ ฟิลด์ และ
การแจงนับ

ผู้ได้รับมอบหมาย
การสร้างรหัสสำหรับผู้ได้รับมอบหมายละเว้น MapAttribute.NativeType ทรัพย์สินและ
สร้างตัวชี้ฟังก์ชัน พิมพ์ดีฟ ที่ตรงกับคำประกาศของผู้แทนที่สุด
เข้าไปใน .h ไฟล์

ตัวอย่างเช่น

เนมสเปซฟู {
[แผนที่]
ผู้รับมอบสิทธิ์สตริง MyCallback (สตริง s);
}

สร้าง พิมพ์ดีฟ :

typedef ถ่าน* (*Foo_MyCallback) (const ถ่าน *s);

ชั้นเรียนและโครงสร้าง
A [แผนที่] - คลาสหรือโครงสร้างที่ตกแต่งแล้วจะได้รับการประกาศโครงสร้าง C ภายใน
.h ไฟล์:

[แผนที่]
โครงสร้างฟู {
int สาธารณะ i;
}

จะกลายเป็น

โครงสร้างฟู {
int สาธารณะ i;
};

ถ้า MapAttribute.NativeType ตั้งค่าคุณสมบัติแล้ว ฟังก์ชั่นการแปลงจะเป็น
ประกาศภายใน .h ไฟล์และสร้างขึ้นภายใน .c ไฟล์:

เนมสเปซฟู {
[แผนที่ ("สถิติโครงสร้าง")]
โครงสร้างสถิติ {
uint สาธารณะ st_uid;
}
}

จะกลายเป็น

/* ไฟล์ .h */
โครงสร้าง Foo_Stat {
int ที่ไม่ได้ลงชื่อ st_uid;
};
int
Foo_FromStat (struct Foo_Stat *จาก, struct stat *เป็น);
int
Foo_ToStat (สถิติโครงสร้าง *เป็น, sxtruct Foo_Stat *เป็น);

/* ไฟล์ .c */
int
Foo_FromStat (struct Foo_Stat *จาก, struct stat *เป็น)
{
memset (ถึง, 0, sizeof(*to);
ถึง ->st_uid = จาก ->st_uid;
0 กลับ;
}

int
Foo_ToStat (สถิติโครงสร้าง *เป็น, sxtruct Foo_Stat *เป็น)
{
memset (ถึง, 0, sizeof(*to);
ถึง ->st_uid = จาก ->st_uid;
0 กลับ;
}

สำหรับคลาส ฟังก์ชันการแปลงจะคัดลอกเฉพาะฟิลด์ที่ประกาศในคลาส
ตัวเอง. ฟิลด์ที่ประกาศในคลาสพาเรนต์จะไม่ถูกคัดลอก (นี้เป็นเพราะ
สร้างแผนที่พื้นเมือง ไม่ทราบว่าการสืบทอดในค. ดังนั้น
การคัดลอกฟิลด์จากคลาสพาเรนต์จะถูกปล่อยไปยังผู้เรียกของการแปลง
ฟังก์ชั่น.)

ฟิลด์ ถ้าฟิลด์ (1) มี แผนที่แอตทริบิวต์ คุณลักษณะและ (2) มี
MapAttribute.NativeType ชุดคุณสมบัติ จากนั้นจะใช้ประเภทเนทีฟที่ระบุ
สำหรับการตรวจสอบน้ำล้น ตัวอย่างเช่น:

เนมสเปซฟู {
[แผนที่ ("สถิติโครงสร้าง")]
โครงสร้างสถิติ {
[แผนที่ ("off_t")] สาธารณะแบบยาว st_size;
}
}

สร้าง

/* ไฟล์ .h */
โครงสร้าง Foo_Stat {
gint64 st_size;
};
int
Foo_FromStat (struct Foo_Stat *จาก, struct stat *เป็น);
int
Foo_ToStat (สถิติโครงสร้าง *เป็น, sxtruct Foo_Stat *เป็น);

/* ไฟล์ .c */
int
Foo_FromStat (struct Foo_Stat *จาก, struct stat *เป็น)
{
_cnm_return_val_if_overflow (off_t, from->st_size, -1);

memset (ถึง, 0, sizeof(*to);
ถึง ->st_size = จาก ->st_size;
0 กลับ;
}

int
Foo_ToStat (สถิติโครงสร้าง *เป็น, sxtruct Foo_Stat *เป็น)
{
_cnm_return_val_if_overflow (gint64, จาก->st_size, -1);

memset (ถึง, 0, sizeof(*to);
ถึง ->st_size = จาก ->st_size;
0 กลับ;
}

ซึ่งมีประโยชน์สำหรับการตรวจสอบข้อผิดพลาดที่ดีขึ้นภายในฟังก์ชันการแปลง
MapAttribute.NativeType จำเป็นสำหรับสิ่งนี้เพราะไม่มีทางอื่นที่จะรู้ว่าอะไร
ประเภทเนทีฟคือ (โดยไม่ต้องแยกวิเคราะห์ไฟล์ส่วนหัวของระบบ...)

การแจงนับ
สร้างการแจงนับ C และมาโครสำหรับสมาชิกแต่ละตัวภายใน
การแจงนับ ไปยัง และ จาก ฟังก์ชั่นยังประกาศใน .h ไฟล์และ
ดำเนินการใน .c ไฟล์

ตัวอย่างเช่น

เนมสเปซฟู {
[แผนที่]
แจกแจง Errno {
ไอน์วาล
}
}

จะสร้างสิ่งต่อไปนี้ใน .h ไฟล์:

enum Foo_Errno {
ฟู_เออร์โน_อีอินวาล = 0,
#กำหนด Foo_Errno_EINVAL Foo_Errno_EINVAL
};
int Foo_FromErrno (จาก int, int *to);
int Foo_ToErrno (int จาก int *to);

และสร้างสิ่งต่อไปนี้ใน .c ไฟล์:

int
Foo_FromErrno (int จาก int *to)
{
*ถึง = 0;
ถ้า (จาก == Foo_Errno_EPERM)
#ifdef ไอน์วาล
{*ถึง = EINVAL;}
#อื่น
{errno = EINVAL; กลับ -1;}
#เอนดิฟ
0 กลับ;
}

int
Foo_ToErrno (int จาก int *to)
{
*ถึง = 0;
#ifdef ไอน์วาล
ถ้า (จาก == EINVAL)
{*ถึง = Foo_Errno_EPERM; คืนค่า 0;}
#เอนดิฟ
กลับ -1;
}

รหัสที่แตกต่างกันจะถูกสร้างขึ้นหาก enum ที่มีการจัดการคือ a [ธง] - ตกแต่ง
การแจงนับ (เพื่อพิจารณาแฟล็กระดับบิต) แต่นี่เป็นแนวคิดพื้นฐาน

การส่งจดหมาย รายการ


เยี่ยมชมร้านค้า http://lists.ximian.com/mailman/listinfo/mono-devel-list เพื่อดูรายละเอียด

เว็บ เว็บไซต์


เยี่ยมชมร้านค้า http://www.mono-project.com สำหรับรายละเอียดเพิ่มเติม

สร้างแผนที่พื้นเมือง(1)

ใช้ create-native-map ออนไลน์โดยใช้บริการ onworks.net


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

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

  • 1
    สวก
    สวก
    SWIG คือเครื่องมือพัฒนาซอฟต์แวร์
    ที่เชื่อมโปรแกรมที่เขียนด้วยภาษา C และ
    C++ ที่มีระดับสูงหลากหลาย
    ภาษาโปรแกรม SWIG ใช้กับ
    แตกต่าง...
    ดาวน์โหลด SWIG
  • 2
    WooCommerce Nextjs ตอบสนองธีม
    WooCommerce Nextjs ตอบสนองธีม
    ตอบสนองธีม WooCommerce ที่สร้างขึ้นด้วย
    JS, Webpack, Babel, Node และ . ถัดไป
    Express โดยใช้ GraphQL และ Apollo
    ลูกค้า. ร้านค้า WooCommerce ใน React (
    ประกอบด้วย: สินค้า...
    ดาวน์โหลด WooCommerce Nextjs React Theme
  • 3
    Archlabs_repo
    Archlabs_repo
    แพ็คเกจ repo สำหรับ ArchLabs นี่คือ
    แอปพลิเคชันที่สามารถดึงข้อมูลได้
    ราคาเริ่มต้นที่
    https://sourceforge.net/projects/archlabs-repo/.
    ได้รับการโฮสต์ใน OnWorks ใน...
    ดาวน์โหลด archlabs_repo
  • 4
    โครงการ Zephyr
    โครงการ Zephyr
    โครงการ Zephyr คือคนรุ่นใหม่
    ระบบปฏิบัติการแบบเรียลไทม์ (RTOS) ที่
    รองรับฮาร์ดแวร์หลายตัว
    สถาปัตยกรรม มันขึ้นอยู่กับ
    เคอร์เนลขนาดเล็ก...
    ดาวน์โหลดโครงการ Zephyr
  • 5
    SCCons
    SCCons
    SCons เป็นเครื่องมือสร้างซอฟต์แวร์
    ที่เป็นทางเลือกที่เหนือกว่า
    เครื่องมือสร้าง "Make" แบบคลาสสิกที่
    เราทุกคนรู้จักและชื่นชอบ SCCons คือ
    ดำเนินการก...
    ดาวน์โหลด SCCons
  • 6
    พีเอสอินท์
    พีเอสอินท์
    PSeInt เป็นล่ามรหัสหลอกสำหรับ
    นักศึกษาการเขียนโปรแกรมที่พูดภาษาสเปน
    จุดประสงค์หลักคือเพื่อเป็นเครื่องมือสำหรับ
    การเรียนรู้และทำความเข้าใจพื้นฐาน
    แนวคิด...
    ดาวน์โหลด PSeInt
  • เพิ่มเติม»

คำสั่ง Linux

Ad