อินเทอร์เน็ต: ข้อดีและข้อเสีย (เรียงความของโรงเรียน) เครือข่ายโซเชียลหลักสูตรในชีวิตของนักเรียนมัธยมปลาย ข้อความในหัวข้อข้อดีและข้อเสียของอินเทอร์เน็ต

ตั้งแต่ปี 2010 สายด่วนสำหรับเด็กทั่วรัสเซีย 8-800-2000-122 ได้รับคำขอมากกว่า 8 ล้านคำขอ
ปัจจุบัน 222 บริการใน 83 ภูมิภาคของประเทศของเราเชื่อมต่อกันด้วยหมายเลขเดียว เด็ก วัยรุ่น และผู้ปกครองสามารถรับความช่วยเหลือด้านจิตใจในสถานการณ์ชีวิตที่ยากลำบากได้ การโทรนั้นฟรีและไม่ระบุชื่อ
โดยเฉพาะเว็บไซต์สายด่วนระบุสัญญาณหลักและการกลั่นแกล้งทางอินเทอร์เน็ต 10 รูปแบบ


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

อันตรายหลักบนอินเทอร์เน็ตสำหรับเด็กและวัยรุ่นมีดังนี้:

1. Cyberbullying (การกลั่นแกล้งทางอินเตอร์เน็ต)

2. การใช้อินเทอร์เน็ตเพื่อบิดเบือนจิตสำนึกของเด็กและวัยรุ่น (การโฆษณาชวนเชื่อของกลุ่มหัวรุนแรง พฤติกรรมต่อต้านสังคม การฆ่าตัวตาย การมีส่วนร่วมในเกมที่เป็นอันตราย)

4. การฉ้อโกงทางไซเบอร์

5. ความปลอดภัยในการเข้าถึงอินเทอร์เน็ตและการขโมยข้อมูลส่วนบุคคลด้วยวิธีทางเทคนิค

6. การรวบรวมข้อมูลส่วนบุคคลของผู้เยาว์อย่างผิดกฎหมายและ (หรือ) การเผยแพร่ในสาธารณสมบัติ

7. เรียกดูไซต์สำหรับผู้ใหญ่

แต่ละรุ่นมีความแตกต่างจากรุ่นก่อนไม่มากก็น้อย แต่เป็นเด็กที่เกิดในช่วงต้นสหัสวรรษที่สามและเราเรียกว่ารุ่น Z ซึ่งในแง่นี้มีเอกลักษณ์เฉพาะตัวอย่างแน่นอน เพราะพัฒนาการของพวกเขาได้รับอิทธิพลมาจาก ช่วงปีแรก ๆได้รับอิทธิพลจากเครื่องมืออันทรงพลังเช่นความเป็นจริงทางดิจิทัล

อินเทอร์เน็ตเป็นสภาพแวดล้อมใหม่และเป็นแหล่งพัฒนาการของเด็ก แน่นอนว่าสถานการณ์นี้ส่งผลต่อการสร้างบุคลิกภาพของเด็ก ความสัมพันธ์กับโลกภายนอก และการปฏิบัติทางวัฒนธรรมของพวกเขา


Sergei Tsymbalenko ประธานสมาคมสร้างสรรค์ “Unpress” กล่าวในการสัมภาษณ์ครั้งหนึ่งว่า “เด็กๆ บนอินเทอร์เน็ต นี่คือความจริง คุณไม่สามารถหลบหนีจากสังคมได้ การสื่อสาร นี่คือการเปลี่ยนแปลงอย่างเด็ดขาดสู่สติปัญญาโดยรวม หรือเด็กๆ เป็นคนแรกที่ก้าวเข้าสู่สภาวะใหม่ของสังคมนี้"

จากข้อมูลของภาควิชาจิตวิทยาบุคลิกภาพของมหาวิทยาลัยแห่งรัฐมอสโก จำนวนเด็กที่ใช้อินเทอร์เน็ตทุกวันเพิ่มขึ้นเป็น 95% ในเวลาเดียวกัน เด็ก 32% ท่องอินเทอร์เน็ตทุกวันเป็นเวลา 8 ชั่วโมง แม้ว่าเมื่อสามปีที่แล้วตัวเลขของพวกเขาจะอยู่ที่เพียง 14% เท่านั้น ต่อหน้าต่อตาเรา คนรุ่นใหม่ "ดิจิทัล" กำลังก่อตัวขึ้น ซึ่งต้องเผชิญกับความเสี่ยงอย่างหลีกเลี่ยงไม่ได้เมื่อใช้เวิลด์ไวด์เว็บ


หนึ่งใน “โครงการขนาดใหญ่” ในโซนโดเมน CHILDREN คือโครงการ Sputnik.Children ซึ่งได้เลือกไซต์ไว้มากกว่า 5,000 แห่ง ทั้งการ์ตูน เกม หนังสือ เพลง และอื่นๆ อีกมากมาย ทรัพยากรแต่ละรายการได้รับการทดสอบโดยผู้ประเมินเครื่องมือค้นหาและระบบรักษาความปลอดภัย

Google เสนอกฎ 10 ข้อสำหรับผู้ปกครองในการดูแลบุตรหลานให้ปลอดภัยบนอินเทอร์เน็ต กฎข้อแรกคือการพูดคุยกับบุตรหลานของคุณเกี่ยวกับความปลอดภัยทางอินเทอร์เน็ต สิ่งสำคัญที่สุดคือโน้มน้าวบุตรหลานของคุณว่าในสถานการณ์ที่ไม่ชัดเจนหรือน่ากลัว เขาควรติดต่อผู้ปกครองเพื่อหาวิธีแก้ปัญหาที่ปลอดภัย

การใช้อินเทอร์เน็ตของวัยรุ่น

บทความที่น่าสนใจเผยแพร่เมื่อวันที่ 03/09/2017 บนเว็บไซต์ หมู่บ้านพร้อมเรื่องราวจากวัยรุ่นรัสเซียห้าคนอายุ 11 - 16 ปี เกี่ยวกับวิธีใช้งานและความสำคัญของอินเทอร์เน็ตที่มีต่อพวกเขา เว็บไซต์โปรดของพวกเขาคืออะไร และ โซเชียลมีเดียความคิดเห็นเกี่ยวกับความปลอดภัยออนไลน์และการควบคุมโดยผู้ปกครอง

ทัศนคติของวัยรุ่นที่มีต่ออินเทอร์เน็ตในหลายๆ ด้านสะท้อนถึงผลลัพธ์ของการศึกษาด้านล่าง ยกเว้นความคิดเห็นทั่วไป: อินเทอร์เน็ตมี “ข้อเสีย” และอันตราย


ในปี 2013 ได้มีการดำเนินการศึกษาทางวิทยาศาสตร์ทั้งหมดของรัสเซียเป็นครั้งแรก (และจนถึงขณะนี้เท่านั้น) เกี่ยวกับความสามารถทางดิจิทัลของวัยรุ่นและผู้ปกครองของเด็กวัยรุ่น การศึกษานี้ดำเนินการโดยมูลนิธิการพัฒนาอินเทอร์เน็ตและคณะจิตวิทยาของมหาวิทยาลัยแห่งรัฐมอสโกซึ่งตั้งชื่อตาม M.V. Lomonosov ด้วยการสนับสนุนจาก Google

ในรัสเซีย 89% ของวัยรุ่นอายุ 12-17 ปีใช้อินเทอร์เน็ตทุกวัน ในวันธรรมดา 37% ใช้เวลา 3 ถึง 8 ชั่วโมงบนอินเทอร์เน็ต ในวันหยุดสุดสัปดาห์ - 47% อินเทอร์เน็ตบนมือถือเป็นที่นิยมในหมู่เด็กมากกว่าพ่อแม่ถึงสองเท่า

วัยรุ่นส่วนใหญ่ใช้อินเทอร์เน็ตในการค้นหา ข้อมูลที่น่าสนใจ- ความนิยมอันดับสองคือการค้นหาข้อมูลเพื่อการศึกษา

ปรากฏว่าเด็กเกือบหนึ่งในสามที่ตอบแบบสำรวจเชื่อว่าอินเทอร์เน็ตไม่มีข้อเสียใดๆ และทุกๆ สิบก็มีปัญหากับคำถามเกี่ยวกับ "ข้อเสีย" ของอินเทอร์เน็ต

ข้อสรุปหลักของการศึกษาคือระดับความสามารถด้านดิจิทัลของทั้งผู้ปกครองและวัยรุ่นนั้นอยู่ที่ประมาณหนึ่งในสามของระดับสูงสุดที่เป็นไปได้ในรัสเซีย (31% สำหรับผู้ปกครองและ 34% สำหรับวัยรุ่น)

ในเดือนมกราคม 2019 VTsIOM ได้ทำการสำรวจผู้ใหญ่และวัยรุ่น (อายุ 14-17 ปี) ในประเด็นที่เกี่ยวข้องกับอิทธิพลของเครือข่ายสังคมที่มีต่อพฤติกรรมของพวกเขา

เป็นสิ่งสำคัญที่ผู้ตอบแบบสอบถามทุกวัยทราบว่าความสนใจของวัยรุ่นในกลุ่ม "ไม่ดี" บนโซเชียลเน็ตเวิร์กนั้นไม่ได้เกิดจากตัวเครือข่ายเอง แต่เกิดจากปัญหาที่แท้จริงของเด็กนักเรียน: 49% ของวัยรุ่นเชื่อว่าความสนใจดังกล่าวมีสาเหตุมาจากความเป็นจริง ปัญหาทางจิตวิทยา, 31% – มีความขัดแย้งกับเพื่อนฝูง และ 29% – ขาดการควบคุมโดยผู้ปกครอง


จากการสำรวจของมูลนิธิ” ความคิดเห็นของประชาชน” ดำเนินการในเดือนธันวาคม 2558 มีเพียง 10% ของเด็กอายุมากกว่า 6 ปีเท่านั้นที่ไม่ได้ใช้โซเชียลเน็ตเวิร์ก คำถามนี้ถามผู้ตอบแบบสอบถามที่มีลูกอายุมากกว่า 6 ปีอาศัยอยู่ด้วย

อิทธิพลของอินเทอร์เน็ตต่อวัยรุ่น

นักจิตวิทยาที่ศูนย์ Perekrestok เพื่อการปรับตัวและพัฒนาการทางสังคมและจิตวิทยาของวัยรุ่นเชื่อว่าหนึ่งในปัญหาหลักคือพัฒนาการของการติดคอมพิวเตอร์

นักจิตวิทยาชาวอังกฤษเชื่อว่าวัยรุ่นติด Facebook, Twitter และ เกมคอมพิวเตอร์ปรากฏการณ์เชิงบวก ในความเห็นของพวกเขา การใช้แอลกอฮอล์และยาเสพติดที่ลดลงของวัยรุ่นในยุโรปและสหรัฐอเมริกามีความสัมพันธ์กับความนิยมที่เพิ่มขึ้นของเครือข่ายสังคม เกมคอมพิวเตอร์ และการแพร่กระจายของโซเชียลมีเดียในหมู่คนหนุ่มสาว

วัยรุ่นชาวรัสเซียก็เหมือนกับเพื่อนชาวตะวันตกที่ใช้เวลาว่างส่วนใหญ่บนอินเทอร์เน็ต อย่างไรก็ตามสิ่งนี้ไม่ส่งผลกระทบต่อระดับการใช้ยา

การติดอินเทอร์เน็ตและความรุนแรงของวัยรุ่น

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

บนอินเทอร์เน็ต วัยรุ่นมีโอกาสที่จะเป็นคนไร้เพศประเภทหนึ่งที่ฆ่าทุกคนและทุกสิ่ง ด้วยความรู้สึกเข้มแข็งและเยือกเย็น หากเด็กดูดกลืนสิ่งนี้ไปจนหมดเขาก็จะกลายเป็นอาชญากร เมื่อถึงจุดหนึ่งเขาจะคิดอย่างนั้น ชีวิตจริงทุกสิ่งยังได้รับอนุญาต หนึ่งในนักพนันเหล่านี้ตอบคำถาม: “ตอนนั้นคุณคิดอะไรอยู่?” - ตอบว่า: "ฉันมีความปรารถนาสองประการ - ไม่ว่าจะฆ่าใครสักคนหรือถูกฆ่า"

ความขัดแย้งของความรู้ทางเทคโนโลยีของเด็ก

Gavin Patterson ผู้บริหารระดับสูงของ BT Group (British Telecommunications plc) กล่าวว่า เด็กๆ ในปัจจุบันอาจเป็นผู้บริโภคเทคโนโลยีรายใหญ่ แต่พวกเขาไม่ค่อยมีความรู้ด้านเทคโนโลยี

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

เด็กนักเรียนชาวรัสเซีย: ความเป็นส่วนตัวและความปลอดภัยบนอินเทอร์เน็ต

รายงานนี้จัดทำโดย Galina Vladimirovna Soldatova ศาสตราจารย์ภาควิชาจิตวิทยาบุคลิกภาพ คณะจิตวิทยา มหาวิทยาลัยแห่งรัฐมอสโก ซึ่งตั้งชื่อตาม M.V. Lomonosov ในการประชุมนานาชาติครั้งที่ 6 “การคุ้มครองข้อมูลส่วนบุคคล” ซึ่งจัดขึ้นเมื่อวันที่ 10 พฤศจิกายน 2558 ที่กรุงมอสโก

76% ของเด็กนักเรียนชาวรัสเซียใช้เวลาโดยเฉลี่ย 3 ชั่วโมงต่อวันบนอินเทอร์เน็ต วัยรุ่นคนที่เจ็ดทุก ๆ คนที่มีอายุระหว่าง 12 ถึง 17 ปีใช้เวลาเกือบหนึ่งในสามของชีวิตบนอินเทอร์เน็ต (8 ชั่วโมงต่อวัน) เด็กนักเรียนยุคใหม่มองว่าอินเทอร์เน็ตไม่ใช่ชุดของเทคโนโลยี แต่เป็นสภาพแวดล้อมในการดำรงชีวิต

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

วัยรุ่นมากกว่าหนึ่งในสามยังคงพร้อมที่จะบอกข้อมูลส่วนบุคคลทางออนไลน์แก่คนแปลกหน้า เช่น ชื่อและนามสกุล อายุที่แน่นอน และส่งรูปถ่ายด้วย เด็กหนึ่งในหกจะแบ่งปันหมายเลขนี้ โทรศัพท์มือถือโดยหมายเลขโรงเรียนจะรายงานจำนวนเกือบเท่ากัน

อิทธิพลของคอมพิวเตอร์และอินเทอร์เน็ตต่อผลการเรียนของโรงเรียน

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

การลงทุนขนาดใหญ่ในด้านเทคโนโลยีสารสนเทศของโรงเรียน "ล้มเหลวในการปรับปรุงที่สามารถวัดผลได้" ในคะแนนการทดสอบโครงการประเมินระดับนานาชาติ ตามรายงานจากองค์การเพื่อความร่วมมือทางเศรษฐกิจและการพัฒนา (OECD) ความสำเร็จทางการศึกษานักเรียนในด้านการอ่าน คณิตศาสตร์ และวิทยาศาสตร์

ตามที่ผู้กำกับกล่าวไว้เรื่องนี้ โปรแกรมการศึกษา OECD Andreas Schleicher การใช้คอมพิวเตอร์และการเปิดตัวอินเทอร์เน็ตในโรงเรียน "ได้ก่อให้เกิดความหวังที่ไม่สมจริงมากเกินไป"

ผลกระทบของ Google หรืออินเทอร์เน็ตกำลังเปลี่ยนแปลงสมองของเราอย่างไร

ปัจจุบันข้อมูลเกือบทุกอย่างสามารถพบได้โดยใช้ เครื่องมือค้นหา- เป็นไปได้ที่นักจิตวิทยาจากมหาวิทยาลัยฮาร์วาร์ด Daniel Wegner และ Adrian Ward กล่าวว่าอินเทอร์เน็ตกำลังเข้ามาแทนที่ไม่เพียงแต่ผู้จัดเก็บข้อมูลเท่านั้น แต่ยังรวมถึงกระบวนการรับรู้ของเราเองด้วย อินเทอร์เน็ตไม่เพียงแต่ช่วยบรรเทาความจำเป็นในการแลกเปลี่ยนข้อมูลแบบ “สด” เท่านั้น แต่ยังบั่นทอนความปรารถนาของเราที่จะจดจำข้อมูลสำคัญอีกด้วย นักจิตวิทยาเรียกสิ่งนี้ว่าเอฟเฟกต์ของ Google

“นักเรียนมีแนวโน้มที่จะมีการรับรู้แหล่งข้อมูลอย่างไร้เดียงสาจนถึงอายุ 15 ปี พวกเขามักจะไม่รู้สึกอยากตรวจสอบข้อมูลที่ได้รับและมีแนวโน้มที่จะนำไปใช้ตามที่เป็นอยู่ โดยมุ่งเน้นไปที่สิ่งที่กำลังพูด” ฌอง-ฟรองซัวส์ รูเอต์ นักวิทยาศาสตร์ชาวฝรั่งเศส ผู้ประเมินผลกระทบของสภาพแวดล้อมดิจิทัลที่มีต่อการอ่านและข้อมูลกล่าว การแสวงหา

ปัญหาความปลอดภัยของเด็กบนอินเทอร์เน็ตในประเทศอื่นๆ

ชาวยุโรปกังวลมากที่สุดเกี่ยวกับการกลั่นแกล้งบนอินเทอร์เน็ต (การกลั่นแกล้ง) บนโซเชียลเน็ตเวิร์กและผลที่ตามมา เมื่อวัยรุ่นอาจรู้สึกหดหู่หรือคิดฆ่าตัวตายเนื่องจากการเยาะเย้ยจากเพื่อนฝูง

เฟสบุ๊คของคุณ

อินเทอร์เน็ต: ข้อดีและข้อเสีย

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

มาดูข้อดีข้อเสียของเว็บนี้กันดีกว่า เรามาเริ่มกันด้วยสิ่งดีๆ

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

ตัวอย่างเช่น คุณต้องการเรียนรู้ภาษาต่างประเทศหรือไม่? ผู้สอนผ่าน Skype แหล่งข้อมูลที่เป็นไปได้ทั้งหมดจะช่วยคุณได้ คุณเพียงแค่ต้องค้นหาบางสิ่งที่ใกล้ชิดกับจิตวิญญาณของคุณมากขึ้นและตอนนี้คุณสามารถเรียนได้ทุกเวลาที่สะดวก (บวกอีกอย่าง)

ไม่จำเป็นต้องเรียน? คุณมีความรู้กว้างขวางเกี่ยวกับบางสิ่งบางอย่างหรือไม่? แบ่งปัน สอนใครสักคน สร้างเว็บไซต์ ดึงดูดผู้ชม สร้างประโยชน์ให้กับใครบางคน

โอกาสหน้าเจอกันอีกครับ. การหาเพื่อนที่มีความสนใจคล้ายกันและอาจมาจากประเทศอื่นจะไม่ทำให้เกิดปัญหาในศตวรรษที่ 21

และอีกมากมาย...

แต่นอกจากข้อดีแล้วยังมีข้อเสียอีกด้วย

ข้อเสียประการแรก ไม่ใช่แค่คนธรรมดาเท่านั้นที่ใช้อินเทอร์เน็ต

เนื่องจากเป็นไปไม่ได้ที่จะเห็นคนนั่งอยู่อีกฝั่งของจอภาพเพื่อดูว่าเกิดอะไรขึ้นในหัวของเขา นี่อาจเป็นอันตรายทันที หากคุณตกอยู่ภายใต้อิทธิพลของคนเหล่านี้ คุณอาจสูญเสียเงินหรือ ถึงกับถูกฆ่าตายเลย (ก็มีกรณีแบบนี้)

นี่คือที่มาของแฮกเกอร์

ไวรัสคือโรคระบาดแห่งศตวรรษที่ 21 และคอมพิวเตอร์เครื่องไหนไม่เก็บข้อมูล พวกเขารู้ความลับมากมายแค่ไหน และเมื่อได้รับข้อมูลดังกล่าวแล้ว คุณสามารถใส่ร้ายบุคคล ทำให้เขาอับอาย และแบล็กเมล์เขาในที่สุด ซึ่งเป็นสิ่งที่คนทั่วไปไม่ต้องการ

ลบประการที่สอง: ความเสื่อมโทรมของผู้คน

ตามที่ระบุไว้ ไม่ใช่ทุกคนที่ใช้อินเทอร์เน็ตอย่างถูกต้อง เมื่อตกอยู่ภายใต้อิทธิพลของอินเทอร์เน็ต ผู้คนไม่รู้ว่าตนเสียเวลาไปมากแค่ไหน

ตัวอย่างเช่น. ลองนึกภาพธนาคารที่ให้คุณ $86,000 ทุกวัน ซึ่งคุณต้องใช้จ่าย และธนาคารจะจัดการส่วนที่เหลือเอง และทุกวัน

แน่นอนว่าคุณจะต้องพยายามใช้จ่ายเงินทุกๆ ดอลลาร์ ดังนั้น $86,400 คือเวลาของคุณ แต่ละวันใหม่จะให้เวลาคุณ 86400 วินาที โดยเอาส่วนที่เหลือออกไป

ตัวเลขที่น่ากลัว และหลายๆ คนใช้เวลาส่วนใหญ่ไปกับการดูโพสต์โง่ๆ บนโซเชียลมีเดีย ทั้งเน็ต ทั้งเซลฟี่ ทั้งตัดต่อ แล้วก็สั่นเพราะไลค์...

ลบที่สาม: ความหยาบคาย

มีความเห็นว่าไม่มีใครเห็นเราบนอินเทอร์เน็ต ไม่ติดตามเรา ฯลฯ แต่ก็เปล่าประโยชน์ มีการติดตามการเข้าชมทั้งหมด คุณสังเกตไหมว่าเมื่อคุณไปที่ไซต์ที่มีชุดเดรสแฟชั่น คุณจะได้รับโฆษณาพร้อมข้อเสนอในการซื้อชุด ฯลฯ ดู. บางครั้งก็ตลก)

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

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

ความยากในการใช้ dll ที่สร้างขึ้นโดยใช้ Borland C++ Builder (ต่อไปนี้จะเรียกว่า BCB) ในโครงการที่พัฒนาในสภาพแวดล้อมของ Microsoft เกิดจากปัญหาหลักสามประการ ประการแรก Borland และ Microsoft มีรูปแบบการตั้งชื่อที่แตกต่างกันสำหรับฟังก์ชันใน dll ขึ้นอยู่กับวิธีการประกาศฟังก์ชันที่ส่งออก ชื่อของมันอาจถูกต่อท้ายด้วยสัญลักษณ์บางอย่างโดยคอมไพเลอร์ ดังนั้นเมื่อใช้รูปแบบการเรียกเช่น __cdecl BCB จะเพิ่มขีดล่างหน้าชื่อฟังก์ชัน Visual C++ (ต่อไปนี้จะเรียกว่า VC) ในทางกลับกัน เมื่อส่งออกฟังก์ชันเป็น __stdcall จะเพิ่มลงในชื่อ นอกเหนือจากขีดล่างแล้ว ยังรวมถึงข้อมูลเกี่ยวกับรายการอาร์กิวเมนต์ (สัญลักษณ์ @ บวกขนาดของรายการอาร์กิวเมนต์ใน ไบต์)

ตารางที่ 1 แสดง ตัวเลือกที่เป็นไปได้ชื่อสำหรับฟังก์ชัน MyFunction ที่เอ็กซ์พอร์ต มีการประกาศดังต่อไปนี้:

ตารางที่ 1. ชื่อฟังก์ชันขึ้นอยู่กับรูปแบบการเรียกและคอมไพเลอร์

ประการที่สอง ไบนารีของอ็อบเจ็กต์ (.obj และ .lib) ที่สร้างโดย BCB เข้ากันไม่ได้กับไฟล์อ็อบเจ็กต์ VC และดังนั้นจึงไม่สามารถเชื่อมโยงกับโปรเจ็กต์ VC ได้ ซึ่งหมายความว่าหากคุณต้องการใช้การเชื่อมโยงโดยนัยกับ dll คุณต้องสร้างไฟล์ .lib (ไลบรารีการนำเข้า) ในรูปแบบที่ Microsoft ยึดถือ

ประการที่สาม ฟังก์ชันคลาสและเมธอดคลาสที่ส่งออกจาก BCB dll ไม่สามารถใช้ในโครงการ VC ได้ เหตุผลก็คือคอมไพเลอร์จะจัดการชื่อของทั้งฟังก์ชันปกติและฟังก์ชันเมธอดคลาส (เพื่อไม่ให้สับสนกับรูปแบบการตั้งชื่อที่แตกต่างกัน) มีการบิดเบือนความผิดเพี้ยนเพื่อรองรับความหลากหลาย กล่าวคือ เพื่อแยกความแตกต่างระหว่างฟังก์ชันที่มีชื่อเดียวกัน แต่ส่งผ่านชุดพารามิเตอร์ที่แตกต่างกันไป หากสามารถหลีกเลี่ยงการบิดเบือนฟังก์ชันปกติได้โดยใช้คำสั่ง "C" ภายนอกก่อนกำหนดฟังก์ชัน (แต่ในกรณีนี้ประการแรกปัญหาแรกเกิดขึ้นข้างหน้า - แบบแผนที่แตกต่างกันสำหรับการตั้งชื่อฟังก์ชันใน dll และประการที่สองจากสองหรือ ฟังก์ชั่นเพิ่มเติมที่มีชื่อเดียวกันสามารถใช้คำสั่ง extern “C” สำหรับหนึ่งในนั้นเท่านั้น มิฉะนั้นข้อผิดพลาดในการคอมไพล์จะเกิดขึ้น) จากนั้นสำหรับฟังก์ชันเมธอดคลาส การบิดเบือนชื่อเป็นสิ่งที่หลีกเลี่ยงไม่ได้ คอมไพเลอร์ของ Borland และ Microsoft ตามที่คุณคงเดาได้ใช้รูปแบบการบิดเบือนที่แตกต่างกัน เป็นผลให้แอปพลิเคชัน VC ไม่เห็นคลาสและวิธีการคลาสที่ส่งออกโดยไลบรารีที่คอมไพล์ใน BCB

ปัญหาทั้งสามนี้ทำให้ใช้งาน BCB dll จากแอปพลิเคชันที่สร้างบน VC ได้ยาก แต่ก็ยังเป็นไปได้ ด้านล่างนี้เป็นสามวิธีในการสร้าง dll ที่เข้ากันได้กับ VC จากนั้นใช้ dll นี้ให้สำเร็จ

อัลกอริทึมสำหรับการสร้าง dll ที่เข้ากันได้กับ VC และการใช้งาน

อัลกอริธึมสองตัวที่อธิบายไว้ในส่วนนี้ใช้การเชื่อมโยง dll โดยนัย ส่วนหนึ่งใช้การโหลด dll ที่ชัดเจน ก่อนอื่นให้เราอธิบายวิธีที่ง่ายที่สุด - ใช้ BCB dll จากโครงการ VC โดยการโหลดอย่างชัดเจนระหว่างการทำงานของโปรแกรม

อัลกอริทึมพร้อมการโหลด dll ที่ชัดเจน

เมื่อใช้เทคนิคนี้ เราจะไม่ต้องสร้างไลบรารีการนำเข้าที่เข้ากันได้กับ VC (.libs) แต่จะมีการเพิ่มชุดการดำเนินการเพื่อโหลดและยกเลิกการโหลด dll ในแอปพลิเคชันที่ใช้งานแทน

มาสร้าง BCB dll (ใหม่ -> ตัวช่วยสร้าง DLL -> C++ -> ใช้ VCL -> ตกลง) ซึ่งส่งออกเพียงสองฟังก์ชันเพื่อความเรียบง่าย หนึ่งในฟังก์ชันจะคำนวณผลรวมของตัวเลขสองตัวและจะไม่ใช้คลาส VCL และอีกฟังก์ชันหนึ่งจะสร้างหน้าต่างและแสดงในส่วนประกอบ TStringGrid VCL องค์ประกอบของอาร์เรย์ที่ส่งผ่านเป็นหนึ่งในอาร์กิวเมนต์

รายการ 1 - คอมไพเลอร์ Borland C++ Builder 5

#ifndef _EXPLICITDLL_

#define _EXPLICITDLL_

int __declspec(dllexport) __cdecl SumFunc(int a, int b);

HWND __declspec (dllexport) __stdcall ViewStringGridWnd (จำนวน int, ค่าสองเท่า *);

คำสำคัญ __declspec พร้อมด้วยแอตทริบิวต์ dllexport ทำเครื่องหมายฟังก์ชันว่าสามารถส่งออกได้ ชื่อฟังก์ชันจะถูกเพิ่มลงในตารางการส่งออก dll ตารางส่งออกของไฟล์ PE ใดๆ (.exe หรือ .dll) ประกอบด้วยอาร์เรย์สามอาร์เรย์: อาร์เรย์ของชื่อฟังก์ชัน (ถ้าให้เจาะจงกว่าคือ อาร์เรย์ของพอยน์เตอร์ไปยังบรรทัดที่มีชื่อฟังก์ชัน) อาร์เรย์ของหมายเลขลำดับฟังก์ชัน และอาร์เรย์ของ ที่อยู่เสมือนสัมพัทธ์ (RVA) ของฟังก์ชัน อาร์เรย์ของชื่อฟังก์ชันจะเรียงลำดับตามตัวอักษร และมีอาร์เรย์ของหมายเลขฟังก์ชันที่สอดคล้องกัน หลังจากการแปลงหมายเลขลำดับจะเปลี่ยนเป็นดัชนีขององค์ประกอบจากอาร์เรย์ของที่อยู่เสมือนสัมพัทธ์ของฟังก์ชัน เมื่อส่งออกฟังก์ชันตามชื่อ ลำดับของการกระทำต่อไปนี้จะเกิดขึ้น: ใช้ชื่อที่รู้จักของฟังก์ชัน ดัชนีในอาร์เรย์ของชื่อฟังก์ชันจะถูกกำหนด จากนั้นใช้ดัชนีผลลัพธ์จากอาร์เรย์ของเลขลำดับ เลขลำดับ ของฟังก์ชันจะถูกกำหนด จากนั้นจากเลขลำดับ โดยคำนึงถึงหมายเลขลำดับฐานของการส่งออกฟังก์ชันสำหรับไฟล์ PE ที่กำหนด ดัชนีจะถูกคำนวณโดยแยก RVA ที่ต้องการของฟังก์ชันออกจากอาร์เรย์ของที่อยู่ นอกจากการส่งออกตามชื่อแล้ว ยังสามารถส่งออกฟังก์ชันตามหมายเลขลำดับได้อีกด้วย ในกรณีนี้ ลำดับของการดำเนินการเพื่อให้ได้ดัชนีขององค์ประกอบจากอาร์เรย์ของที่อยู่เสมือนแบบสัมพันธ์จะลดลงเฉพาะในการแปลงหมายเลขลำดับของฟังก์ชันเท่านั้น หากต้องการส่งออกฟังก์ชันตามหมายเลข ให้ใช้ไฟล์ .def พร้อมส่วน "ส่งออก" โดยที่แต่ละฟังก์ชันจะได้รับหมายเลขซีเรียล ในเวลาเดียวกันในข้อความของ dll นั้นเอง ฟังก์ชันจะไม่ถูกทำเครื่องหมายว่าส่งออกแล้ว ข้อมูลเพิ่มเติมเกี่ยวกับตารางการส่งออกสามารถพบได้ในบทความที่ #"7248.files/image002.gif">ImplicitLinkingAliases.def

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

ImplicitLinking_cdecl.def

libRARY นัยยะเชื่อมโยง_CDECL.DLL

ซัมฟันก์@4 ;

SumFunc

ViewStringGridWnd @5 ; ViewStringGridWnd

บันทึก

ในบทความเดียวที่ฉันพบในหัวข้อนี้ (บนเว็บไซต์ bcbdev.com) นอกเหนือจากการลบฟังก์ชันที่ไม่เกี่ยวข้องออกจากไฟล์ .def แล้ว เรายังแนะนำให้แทนที่ชื่อของส่วน EXPORTS ด้วย IMPORTS สิ่งนี้ไม่ควรทำด้วยเหตุผลง่ายๆ ที่ยูทิลิตี้ lib.exe (อย่างน้อยมาพร้อมกับ Visual Studio 6 และ 7) ไม่รองรับส่วนการนำเข้า ดังนั้นจึงเพิกเฉยต่อคำอธิบายฟังก์ชันที่ตามมาทั้งหมดและสร้างไฟล์ .lib ที่ว่างเปล่า ยูทิลิตี้ lib.exe อยู่ในไดเร็กทอรี $(VC)\Bin แต่มักจะล้มเหลวในการรันในครั้งแรกเนื่องจากต้องใช้ไลบรารี mspdb60.dll ในการทำงาน (สำหรับ lib.exe ที่มาพร้อมกับ Visual Studio 7, mspdb70. dll) mspdb60.dll อยู่ในโฟลเดอร์ $(Microsoft Visual Studio)\Common\MSDev98\Bin และ mspdb70.dll อยู่ในโฟลเดอร์ $(Microsoft Visual Studio .NET)\Common7\IDE

การใช้ยูทิลิตี้ lib.exe เราจะสร้างไฟล์ .lib ในรูปแบบ COFF ที่จำเป็นสำหรับการเชื่อมโยงโดยนัย โดยพิมพ์ในบรรทัดคำสั่ง

lib.exe /def:ImplicitLinking_cdecl.def

lib.exe /def:ImplicitLinking_cdecl.def /ออก:ImplicitLinking_cdecl.lib

เราจะเพิ่มไฟล์ .lib ที่เป็นผลลัพธ์ให้กับโปรเจ็กต์ไคลเอนต์ VC (โปรเจ็กต์ -> เพิ่มไปยังโปรเจ็กต์ -> ไฟล์...)

ตอนนี้เรามาดูวิธีการใช้ชื่อฟังก์ชันเดียวกันในไฟล์ส่วนหัวและอ็อบเจ็กต์ (.lib) โดยใช้คำสั่ง #define มาเขียนไฟล์ส่วนหัวของไลบรารี BCB ของเราใหม่ดังนี้:

รายการ 4 - คอมไพเลอร์ Borland C++ Builder 5

ImplicitLinking_cdecl.h เมื่อรวบรวมแอปพลิเคชัน VC ไคลเอนต์ในส่วนหัวที่เชื่อมต่อกับโปรเจ็กต์(ImplicitLinking_cdecl.h) เครื่องหมายขีดล่างจะถูกเพิ่มเข้าไปในชื่อของแต่ละฟังก์ชันโดยใช้คำสั่ง #define (มาโคร _MSC_VER ถูกกำหนดโดยคอมไพเลอร์ VC ตามค่าเริ่มต้น) เนื่องจากฟังก์ชัน __cdecl ถูกส่งออกจาก BCB dll ในลักษณะเดียวกัน นั่นคือเมื่อมีการเพิ่มขีดล่าง ความสอดคล้องระหว่างชื่อของฟังก์ชันที่ส่งออกและประกาศจึงถูกสร้างขึ้น มาโคร #define ขยายอิทธิพลไปยังโค้ดแอปพลิเคชันที่ตามมาทั้งหมด ซึ่งช่วยให้ข้อความของโปรแกรมใช้ชื่อเดิมเมื่อเรียกใช้ฟังก์ชันที่นำเข้า ซึ่งจะเสริมด้วยขีดล่างเวทย์มนตร์ที่จำเป็นในระหว่างการคอมไพล์ ดังนั้นเราจึงปฏิบัติตามผู้นำของ Borland และในแอปพลิเคชันไคลเอนต์เราใช้ชื่อที่แก้ไขโดยคอมไพเลอร์ BCB เพื่อเรียกใช้ฟังก์ชันจาก dll ของเรา ในความคิดของฉัน จำเป็นต้องใช้ชื่อที่เปลี่ยนชื่อ (แม้ว่าจะไม่ได้ต้องขอบคุณเคล็ดลับการกำหนดอย่างเปิดเผย) นั่นเป็นข้อเสียเปรียบที่สำคัญของวิธีนี้ เนื่องจาก ตัวอย่างเช่น หากคุณต้องการอย่างชัดเจน (ดูหัวข้อ “อัลกอริทึมที่มีความชัดเจน” กำลังโหลด dll”) คุณจะต้องใช้ dll ทำงานด้วยชื่อฟังก์ชันที่แก้ไข โดยไม่ต้องพัฒนาหัวข้อนี้เพิ่มเติม ฉันจะบอกว่าหาก BCB dll ถูกสร้างขึ้นโดยมีจุดประสงค์ชัดเจนที่จะใช้ในแอปพลิเคชัน VC จะเป็นการดีกว่าถ้าเพิ่มไฟล์ไลบรารี .def ให้กับโปรเจ็กต์ด้วยชื่อนามแฝงของฟังก์ชันที่ใช้งานง่าย

ถึงข้อดี วิธีนี้(define-trick) สามารถนำมาประกอบกับความเรียบง่ายและไม่ว่าจะขัดแย้งกับสิ่งที่กล่าวไว้ในย่อหน้าก่อนหน้ามากแค่ไหน แต่ก็ไม่จำเป็นต้องเพิ่มนามแฝงของฟังก์ชันลงในตารางส่งออก DLL แม้จะมีความสะดวกในการใช้นามแฝง แต่ตารางการส่งออก (และ dll เอง) ก็มีขนาดเพิ่มขึ้น ใช่ และสร้างไฟล์ .def เป็นนามแฝงเมื่อใด ปริมาณมากฟังก์ชั่นไม่ได้เพิ่มอารมณ์ที่น่าพึงพอใจ

หลังจากรวบรวม dll โดยใช้ impdef.exe เราได้รับไฟล์ส่งออก .def ซึ่งเราใช้ยูทิลิตี้ lib.exe เพื่อสร้างไฟล์วัตถุ .lib และเพิ่มลงในโครงการ VC ของไคลเอ็นต์

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

รายการ 5 - คอมไพเลอร์ Visual C++ 6.0

การใช้ImplicitLinking_cdeclDlg.cpp

// จัดการหน้าต่างด้วยองค์ประกอบ VCL StringGrid

HWND hGrid = โมฆะ;

// รวมไฟล์ส่วนหัวของไลบรารี

#รวม "ImplicitLinking_cdecl.h"

// รหัสที่สร้างโดยสภาพแวดล้อมการพัฒนา

CUsingImplicitLinkng_cdeclDlg::OnSumFunc() เป็นโมฆะ

// เรียกใช้ฟังก์ชัน SumFunc จาก dll

ความละเอียดภายใน = SumFunc(5, 9);

// แสดงผลลัพธ์ในชื่อเรื่องของกล่องโต้ตอบ

นี้ -> SetWindowText (itoa (res, str ,10));

CUsingImplicitLinkng_cdeclDlg::OnViewStringGridWnd() เป็นโมฆะ

// เริ่มต้นอาร์กิวเมนต์

จำนวน int const = 5;

ค่าสองเท่า = (2.14, 3.56, 6.8, 8, 5.6564);

// ปิดหน้าต่างที่สร้างไว้ก่อนหน้านี้เพื่อไม่ให้ "คูณ"

ถ้า(hGrid != NULL)

::ส่งข้อความ(hGrid, WM_CLOSE, 0, 0);

// เรียกใช้ฟังก์ชัน ViewStringGridWnd จาก dll

hGrid = ViewStringGridWnd (นับ, ค่า);

โมฆะ CUsingImplicitLinkng_cdeclDlg::OnDestroy()

ซีดี::OnDestroy();

// ปิดหน้าต่างด้วยส่วนประกอบ StringGrid หากถูกสร้างขึ้น

ถ้า(hGrid != NULL)

::ส่งข้อความ(hGrid, WM_CLOSE, 0,0);

ข้อได้เปรียบหลักของการโหลด dll โดยนัยคือ dll ไม่ได้ถูกใช้อย่างชัดเจนโดยแอปพลิเคชันไคลเอนต์ กล่าวอีกนัยหนึ่ง แอปพลิเคชันเมื่อเรียกใช้ฟังก์ชันต่างๆ ไม่ทราบว่าอาจอยู่ที่ใดที่หนึ่งในโมดูลภายนอก ผลลัพธ์ที่ได้คือทำให้โค้ดโปรแกรมง่ายขึ้น ข้อเสียรวมถึงข้อเท็จจริงที่ว่า dll ยังคงอยู่ในหน่วยความจำตลอดการดำเนินการทั้งหมดของโปรแกรมที่ใช้งานโดยปริยาย dll จะถูกโหลดเมื่อมีการโหลดแอปพลิเคชัน - ตัวโหลดไฟล์ PE เมื่อดูแต่ละรายการในตารางนำเข้าแอปพลิเคชัน จะโหลด dll ที่สอดคล้องกับรายการนี้ ดังนั้นหากมีการใช้ไลบรารีจำนวนมาก การโหลดโปรแกรมหลักอาจใช้เวลานาน หากไม่มี dll ที่ใช้โดยปริยาย แอปพลิเคชันจะไม่เริ่มทำงานเลย

อัลกอริธึมสุดท้ายที่มีการผูกมัดโดยนัยสำหรับการส่งออก (นำเข้า) ฟังก์ชัน __cdecl ประกอบด้วยลำดับของการดำเนินการต่อไปนี้ (ดูโครงการสาธิตเพิ่มเติม):

1. ประกาศฟังก์ชันที่ส่งออกเป็น __cdecl

2. วางการประกาศฟังก์ชันไว้ในบล็อก “C” ภายนอก โดยไม่ต้องส่งออกคลาสและฟังก์ชันสมาชิกของคลาส

3. ในไฟล์ส่วนหัวเพื่อให้สามารถใช้งานได้เพิ่มเติมในฝั่งไคลเอ็นต์ ให้แทรก:

และเพิ่มมาโคร _DECLARATOR_ ลงในแต่ละการประกาศฟังก์ชัน เช่น

หากใช้เคล็ดลับ #define จะต้องข้ามขั้นตอนที่ 7

5. คอมไพล์ BCB dll

6. ใช้ impdef.exe สร้างไฟล์ .def ด้วยชื่อของฟังก์ชันที่ส่งออก

7. หากคุณใช้นามแฝงในขั้นตอนที่ 4 ให้ลบชื่อฟังก์ชันที่ไม่ได้ใช้ออกจากไฟล์ส่งออก .def เหลือเพียงนามแฝงเท่านั้น

8. สร้างโครงการ VC ของลูกค้า

9. จากไฟล์ส่งออกไลบรารี .def โดยใช้ยูทิลิตี้ lib.exe สร้างไฟล์อ็อบเจ็กต์ .lib ในรูปแบบ COFF และเพิ่มลงในแอปพลิเคชันไคลเอนต์ VC

10. คัดลอก BCB dll และไฟล์ส่วนหัวไปยังโฟลเดอร์ที่มีโครงการ VC ไคลเอนต์

11. ในแอปพลิเคชันไคลเอ็นต์ ให้เชื่อมต่อไฟล์ส่วนหัว dll

12. เรียกใช้ฟังก์ชันที่จำเป็นในส่วนเนื้อความของโปรแกรมโดยไม่ต้องคำนึงถึงข้อเท็จจริงที่ว่าฟังก์ชันเหล่านั้นอยู่ใน dll ภายนอก

อัลกอริธึมการเชื่อมโยงโดยนัยสำหรับการส่งออก (นำเข้า) ฟังก์ชัน __stdcall

ตามที่กล่าวไว้ข้างต้น ยูทิลิตี้ lib.exe สามารถสร้างไลบรารีการนำเข้าจากไฟล์ส่งออก .def เท่านั้น และ lib.exe จะไม่โต้ตอบกับ dll ในทางใดทางหนึ่ง อย่างไรก็ตาม ไฟล์ .def ไม่มีข้อมูลใดๆ เกี่ยวกับรูปแบบการเรียกที่ฟังก์ชันที่ส่งออกยึดถือ ด้วยเหตุนี้ lib.exe ซึ่งทำงานเฉพาะกับไฟล์ .def จะไม่สามารถรับรู้ได้ว่ากำลังจัดการกับฟังก์ชัน __stdcall และด้วยเหตุนี้ จะไม่สามารถแสดงฟังก์ชันในไฟล์ .lib ตาม Microsoft ได้ แบบแผนการตั้งชื่อสำหรับฟังก์ชัน __stdcall- ดังนั้น เมื่อพิจารณาจากส่วนก่อนหน้านี้ที่ lib.exe สร้างไฟล์ .lib ที่ทำงานได้อย่างสมบูรณ์สำหรับฟังก์ชัน __cdecl เราจึงได้ข้อสรุปดังต่อไปนี้: ยูทิลิตี้ lib.exe ไม่สามารถสร้างไลบรารีการนำเข้าสำหรับ dll ที่ส่งออกฟังก์ชัน __stdcall ส่วนนี้จัดทำขึ้นสำหรับผู้ที่ต้องการหรือถูกบังคับ (และหลังจากอ่านส่วนนี้แล้ว ฉันคิดว่าเป็นการบังคับเท่านั้น) ให้ใช้ BCB dll กับฟังก์ชัน __stdcall ใน VC

ซอร์สโค้ด BCB dll ยังคงเหมือนกับในส่วนก่อนหน้า (ดูรายการ 3) เพียงคำสำคัญ __cdecl เท่านั้นที่ต้องถูกแทนที่ตลอด คำหลัก __stdcall.

เป็นที่ทราบกันว่าเมื่อสร้าง VC dll พร้อมกัน สภาพแวดล้อมจะสร้างไฟล์ .lib (ไลบรารีการนำเข้า) ซึ่งจะแสดงในรูปแบบ COFF ที่เราต้องการ และฟังก์ชัน __stdcall จะแสดงอย่างถูกต้อง ดังนั้น เรามาสร้าง (ไฟล์ -> ใหม่... -> Win32 Dynamic-Link Library -> ตกลง -> โครงการ DLL ว่างเปล่า -> เสร็จสิ้น) dll VC จำลองที่จะส่งออกชุดฟังก์ชันเดียวกันกับ BCB dll การใช้ฟังก์ชันต่างๆ ใน ​​false dll นั้นไม่สำคัญอย่างยิ่ง มีเพียงชื่อเท่านั้นที่มีความสำคัญ นอกเหนือจากชื่อเดียวกันของฟังก์ชันที่ส่งออกแล้ว ไลบรารีเท็จและไลบรารีต้นทางต้องมีชื่อเหมือนกัน เนื่องจากไฟล์ .lib มีชื่อของ dll คุณสามารถใช้ซอร์สโค้ด BCBdll ได้โดยการคัดลอกไฟล์ .h และ .cpp ไปยังไดเร็กทอรีของ false dll จากนั้นเพิ่มลงในโปรเจ็กต์ (โครงการ -> เพิ่มไปยังโปรเจ็กต์ -> ไฟล์...) และลบเนื้อหาทั้งหมด ฟังก์ชั่น หากฟังก์ชันส่งคืนค่า ให้ปล่อยคำสั่ง return ไว้และส่งคืนสิ่งที่คุณต้องการตามประเภท (สามารถใช้ 0, NULL ฯลฯ ได้) เนื่องจากเนื้อหาของฟังก์ชันจะว่างเปล่า คำสั่ง #include ส่วนใหญ่ที่มีไฟล์ส่วนหัวที่รวมอยู่จึงสามารถลบออกได้เช่นกัน จากตัวอย่างของเรา เราได้รับโค้ดต่อไปนี้สำหรับ dll เท็จ:

รายการ 6 - คอมไพเลอร์ Visual C++ 6.0

ImplicitLinking_stdcallDummy.h

#ifdef _DLLEXPORT_

#define _DECLARATOR_ __declspec(dllexport)

#define _DECLARATOR_ __declspec(dllimport)

int _DECLARATOR_ __stdcall SumFunc (int a, int b);

HWND _DECLARATOR_ __stdcall ViewStringGridWnd (จำนวน int, ค่าสองเท่า *);

ImplicitLinking_stdcallDummy.cpp

ไม่จำเป็นต้องใช้บรรทัดที่มีชื่อของไลบรารี (LIBRARY) ในไฟล์ .def แต่หากมีอยู่ ชื่อที่ระบุในนั้นจะต้องตรงกับชื่อของ false และ source dll ทุกประการ เราเพิ่มไฟล์ .def ให้กับโปรเจ็กต์ VC คอมไพล์ใหม่และรับ false dll และไลบรารีการนำเข้าที่เราต้องการ ซึ่งมีคำอธิบายที่ถูกต้องของฟังก์ชัน __stdcall ที่ส่งออก ต้องเพิ่มไฟล์ .lib ที่สืบทอดมาจาก false dll (เชื่อมโยง) ไปยังโปรเจ็กต์ VC ใดๆ ที่จะใช้ BCB dll ดั้งเดิมของเรา

ตัวอย่างแอปพลิเคชัน VC ที่นำเข้าฟังก์ชัน __stdcall เหมือนกับในส่วนก่อนหน้า (ดูรายการ 5) อย่าลืมรวม (#include) ไฟล์ส่วนหัว BCB dll ที่จำเป็นในตัวอย่างและเพิ่มลงในโครงการ ห้องสมุดที่ต้องการนำเข้า

อัลกอริธึมการเชื่อมโยงโดยนัยสำหรับการส่งออก (นำเข้า) ฟังก์ชัน __stdcall (ดูโครงการสาธิต ImplicitLinkingDll_stdcall.zip):

ประกาศฟังก์ชันที่ส่งออกเป็น __stdcall

วางการประกาศฟังก์ชันไว้ในบล็อก "C" ภายนอก ห้ามส่งออกคลาสและฟังก์ชันสมาชิกของคลาส

คอมไพล์ BCB dll

เนื่องจากไม่สามารถสร้างไลบรารีการนำเข้าที่ถูกต้องโดยใช้ยูทิลิตี lib.exe ได้ ให้สร้าง VC dll ปลอมที่มีชุดฟังก์ชันเดียวกันกับ BCB dll ดั้งเดิม

ตรวจสอบข้อมูลประจำตัวของชื่อของ dll เท็จและ dll ดั้งเดิม ชื่อจะต้องตรงกัน

หากใช้ซอร์สโค้ดของ BCB dll สำหรับไลบรารีปลอม ให้ลบเนื้อหาของฟังก์ชันออก หากไม่ได้ใช้ ให้สร้างฟังก์ชันว่างที่มีชื่อและลายเซ็นเดียวกันกับใน dll ต้นฉบับ

เพื่อป้องกันการเปลี่ยนแปลงชื่อฟังก์ชันระหว่างการส่งออก ให้เพิ่มไฟล์ .def ไลบรารี่ปลอมลงในโปรเจ็กต์ VC พร้อมส่วน EXPORTS ซึ่งแสดงรายการชื่อดั้งเดิมของฟังก์ชันที่ส่งออกทั้งหมด

คอมไพล์ dll เท็จและรับไฟล์ .lib ที่จำเป็นพร้อมการแสดงฟังก์ชัน __stdcall ที่ถูกต้อง

สร้างโปรเจ็กต์ VC ของไคลเอ็นต์และเพิ่มไฟล์ .lib ที่เป็นผลลัพธ์ลงไป

คัดลอก BCB dll และไฟล์ส่วนหัวไปยังโฟลเดอร์ที่มีโปรเจ็กต์ VC ของไคลเอ็นต์

เชื่อมต่อไฟล์ส่วนหัวในแอปพลิเคชันไคลเอนต์

เรียกใช้ฟังก์ชันที่จำเป็นในข้อความโปรแกรมโดยไม่ต้องคำนึงถึงข้อเท็จจริงที่ว่าฟังก์ชันเหล่านั้นอยู่ใน dll ภายนอก

อย่างที่คุณเห็น การทำให้แน่ใจว่าการโต้ตอบที่ประสบความสำเร็จระหว่าง BCB dll และแอปพลิเคชันไคลเอนต์ VC นั้นเป็นงานที่ไม่สำคัญ อย่างไรก็ตาม การโต้ตอบดังกล่าวมีความจำเป็นในกรณีที่การใช้ VCL และ C++ Builder เมื่อพัฒนาแต่ละส่วนของแอปพลิเคชันจะดีกว่า (เช่น เนื่องจากต้นทุนด้านเวลา) ด้วยการใช้อัลกอริทึมที่อธิบายไว้ในบทความ คุณจะสามารถสร้างและใช้ BCB dll จากโครงการ VC ได้สำเร็จ

อ้างอิง

เพื่อเตรียมงานนี้ มีการใช้วัสดุจากไซต์งาน

อินเทอร์เน็ตในชีวิตของวัยรุ่น: ข้อดีและข้อเสีย

สำเร็จโดยนักเรียนชั้นประถมศึกษาปีที่ 10 บอร์ตโซวา อี.


  • ค้นหาอิทธิพลของอินเทอร์เน็ตที่มีต่อผู้คน
  • ระบุด้านบวกและด้านลบของเครือข่ายคอมพิวเตอร์

“อินเทอร์เน็ตเป็นสากล เครือข่ายคอมพิวเตอร์ที่ให้อิสระอย่างมหาศาลแก่ผู้ใช้” เป็นหนึ่งในสูตรอย่างเป็นทางการ

ผู้ที่ "เข้า" เครือข่ายเป็นครั้งแรกมักจะยังคงอยู่ ความประทับใจที่ดีเกี่ยวกับอินเทอร์เน็ต แต่นี่เป็นเรื่องจริงเหรอ? คุณเข้าใจสิ่งนี้ตามเวลาเท่านั้น ยิ่งคุณใช้อินเทอร์เน็ตนานเท่าไร คุณก็ยิ่งเห็นไม่เพียงแต่ข้อดีเท่านั้น แต่ยังรวมถึงข้อเสียด้วย แต่น่าเสียดายที่ไม่ใช่ทุกคนที่จะเข้าใจและตระหนักได้ว่าอินเทอร์เน็ตเติมเต็มจิตสำนึกของเราได้อย่างไร และเราไม่สามารถแยกแยะระหว่างสิ่งที่ดีและสิ่งที่ไม่ดีได้อีกต่อไป


อินเทอร์เน็ตให้อะไรกับเรามากมาย

บริการต่างๆ เช่น

รายได้

การสื่อสาร

มีข้อมูลมากมาย



แต่! ด้วยเหตุนี้จึงมีข้อเสียหลายประการซึ่งมีมากกว่าข้อดีมากมาย:

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

การติดอินเทอร์เน็ต

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


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

ด้านลบอีกประการหนึ่งของการสื่อสารของวัยรุ่นบนโซเชียลเน็ตเวิร์กคือข้อจำกัดของโอกาสในการสื่อสารใน โลกแห่งความเป็นจริงพวกเขามีปัญหาในการเชื่อมต่อที่แท้จริง ท้ายที่สุดแล้วบนอินเทอร์เน็ตวัยรุ่นสามารถเลือกบทบาทใด ๆ สำหรับตัวเองทำให้ตัวเองดีขึ้นสวยขึ้นมีตัวตนในอุดมคติ แต่ในชีวิตทุกอย่างไม่ง่ายนักเพราะคุณคือสิ่งที่คุณเป็น




สูงสุด