บทนำ
โปรแกรมแก้ไขด่วนที่อธิบายไว้ในบทความนี้ช่วยแก้ไขปัญหาต่อไปนี้ใน Microsoft Visual Studio 2010
ปัญหาที่ 1
คุณพบลักษณะการทำงานที่ไม่คาดคิดเมื่อคุณเรียกใช้โปรแกรมประยุกต์ที่มีการวนรอบในรหัสแหล่งมา ปัญหานี้เกิดขึ้นหากคอมไพล์รหัสแหล่งมา มีการปรับให้เหมาะสมสากล (/ อก) เปิดใช้งาน
ปัญหาที่ 2
พิจารณาสถานการณ์สมมติต่อไปนี้:
-
คุณมีโครงการ Visual C++ ที่มีแฟ้ม Atlcomcli.h
-
คุณระบุตัวเลือกของคอมไพเลอร์ /J เพื่อกำหนด_CHAR_UNSIGNEDแมโครในโครงการ
-
คุณคอมไพล์โครงการ
ในสถานการณ์สมมตินี้ คุณได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
-
ข้อผิดพลาด C2338: CVarTypeInfo <อักขระ > ไม่ถูกคอมไพล์ ด้วยค่าสถานะที่เปิดใช้งาน /J หรือ _CHAR_UNSIGNED
-
ข้อผิดพลาด C2338: CVarTypeInfo <อักขระ * > ไม่ถูกคอมไพล์ ด้วยค่าสถานะที่เปิดใช้งาน /J หรือ _CHAR_UNSIGNED
ปัญหาที่ 3
การละเมิดการเข้าถึงเกิดขึ้นเมื่อคุณเรียกใช้โปรแกรมประยุกต์ Visual C++ ที่ถูกสร้างขึ้นสำหรับ Windows รุ่นที่ใช้ x86 ปัญหานี้เกิดขึ้นเมื่อแอพลิเคชันมีแผนภูมิเป็นนิพจน์ที่มีอาร์กิวเมนต์ป้อนเข้าอาร์เรย์ชนิดที่สอง
สาเหตุ
สาเหตุของปัญหา 1
ปัญหานี้เกิดขึ้นเนื่องจากมีดำเนินการเพิ่มประสิทธิภาพการวนรอบไม่ถูกต้อง ซึ่งทำให้สร้างรหัสที่ไม่ถูกต้อง
สาเหตุของปัญหา 2
ปัญหานี้เกิดขึ้นเนื่องจาก assertions แบบคงที่ในแฟ้ม Atlcomcli.h จะถูกกำหนดเป็นอ็อพชัน /J และแมโค CHAR_UNSIGNED ไม่ถูกต้อง
สาเหตุของปัญหา 3
ปัญหานี้เกิดขึ้นเนื่องจากมีผสมอาร์กิวเมนต์ในคำแนะนำในการผลักดันค่า ดังนั้น อาร์กิวเมนต์ที่ไม่ถูกต้องจะถูกส่งผ่านไปดันคำแนะนำ
ข้อมูลเพิ่มเติม
ข้อมูลโปรแกรมแก้ไขด่วน
โปรแกรมแก้ไขด่วนจะพร้อมใช้งานได้ในขณะนี้จาก Microsoft อย่างไรก็ตาม มุ่งหวังเพื่อแก้ไขปัญหาที่อธิบายไว้ในบทความนี้เท่านั้น นำวิธีนี้ไปใช้กับระบบที่ประสบกับปัญหาที่เฉพาะเจาะจงเท่านั้น โปรแกรมแก้ไขด่วนนี้อาจได้รับการทดสอบเพิ่มเติม ดังนั้น ถ้าคุณจะไม่รุนแรงได้รับผลกระทบจากปัญหานี้ เราขอแนะนำให้ คุณรอการถัดไป Visual Studio 2010 ที่ประกอบด้วยโปรแกรมแก้ไขด่วนนี้
เมื่อต้องการแก้ไขปัญหานี้ทันที ติดต่อฝ่ายบริการสนับสนุนลูกค้าของ Microsoft เพื่อขอรับโปรแกรมแก้ไขด่วน สำหรับรายชื่อทั้งหมดของหมายเลขโทรศัพท์ของบริการการสนับสนุนลูกค้าของ Microsoft และข้อมูลเกี่ยวกับค่าใช้จ่ายสนับสนุน แวะไปที่เว็บไซต์ของ Microsoft ต่อไปนี้:
http://support.microsoft.com/contactus/?ws=supportหมายเหตุ ในกรณีพิเศษ ค่าบริการที่เรียกเก็บตามปกติเมื่อโทรติดต่อฝ่ายสนับสนุนอาจจะยกเลิกได้หาก Microsoft Support Professional ตัดสินว่าโปรแกรมปรับปรุงที่เฉพาะเจาะจงจะแก้ไขปัญหาของคุณได้ ค่าใช้จ่ายในการสนับสนุนตามปกติจะใช้กับคำถามและปัญหาในการสนับสนุนเพิ่มเติมซึ่งไม่สอดคล้องตามเกณฑ์สำหรับโปรแกรมปรับปรุงเฉพาะที่เกี่ยวข้อง
ข้อกำหนดเบื้องต้น
คุณต้องมี Microsoft Visual Studio 2010 ติดตั้งอยู่เพื่อใช้โปรแกรมแก้ไขด่วนนี้
ข้อกำหนดการรีสตาร์ท
คุณไม่ต้องรีสตาร์ทคอมพิวเตอร์หลังจากใช้โปรแกรมแก้ไขด่วนถ้าคุณกำลังใช้แฟ้มที่ได้รับผลกระทบ
ข้อมูลการแทนที่โปรแกรมแก้ไขด่วน
โปรแกรมแก้ไขด่วนนี้ไม่ได้แทนโปรแกรมแก้ไขด่วนอื่น ๆ
ข้อมูลแฟ้ม
เวอร์ชันภาษาอังกฤษของโปรแกรมแก้ไขด่วนนี้มีแอตทริบิวต์ของแฟ้ม (หรือแอตทริบิวต์ของแฟ้มที่ใหม่กว่านี้) ซึ่งแสดงรายการไว้ในตารางต่อไปนี้ วันที่และเวลาสำหรับแฟ้มเหล่านี้จะแสดงรายการไว้ในรูปแบบเวลามาตรฐานสากล (UTC) เมื่อคุณดูข้อมูลแฟ้ม ระบบจะแปลงข้อมูลนี้เป็นเวลาท้องถิ่น เมื่อต้องการค้นหาความแตกต่างระหว่างเวลา UTC กับเวลาท้องถิ่น ใช้
โซนเวลา
ในการ
วันและเวลา
รายการใน'แผงควบคุม'
ชื่อแฟ้ม |
รุ่นของแฟ้ม |
ขนาดของแฟ้ม |
วันที่ |
เวลา |
แพลตฟอร์ม |
---|---|---|---|---|---|
C2.dll |
16.0.30319.314 |
2,510,144 |
30-May-2010 |
20:48 |
x86 |
C2.dll |
16.0.30319.314 |
2,588,480 |
30-May-2010 |
20:48 |
x86 |
C2.dll |
16.0.30319.314 |
2,630,976 |
30-May-2010 |
20:48 |
x86 |
C2.dll |
16.0.30319.314 |
2,977,600 |
30-May-2010 |
20:48 |
x64 |
C2.dll |
16.0.30319.314 |
7,351,616 |
30-May-2010 |
20:48 |
IA-64 |
วิธีแก้ปัญหา
วิธีแก้ปัญหาสำหรับปัญหา 1
เมื่อต้องการหลีกเลี่ยงปัญหานี้ ปิดใช้งานการปรับให้เหมาะสมสากล สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการปิดใช้งานการปรับให้เหมาะสมสากล โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
216181แก้ไข: รหัสที่สร้างขึ้นโดย มีประสิทธิภาพสูงสุดของ /Og ไม่ถูกต้อง
วิธีแก้ปัญหาสำหรับปัญหา 2
เมื่อต้องการหลีกเลี่ยงปัญหานี้ ใช้ไดเรกทีฟ pragma ต่อไปนี้จะรวมแฟ้ม Atlcomcli.h
#pragma push_macro("ATLSTATIC_ASSERT")
#undef ATLSTATIC_ASSERT
#define ATLSTATIC_ASSERT(x,y)
#include <atlcomcli.h>
#undef ATLSTATIC_ASSERT
#pragma pop_macro("ATLSTATIC_ASSERT")