ใน ATL 2.1 คลาสIObjectSafetyImplทำเครื่องหมายตัวควบคุมเป็นการปลอดภัยสำหรับสร้างสคริปต์ เหตุผลด้านความปลอดภัย เริ่มต้นนี้ถูกเอาออก ดังนั้นคุณต้องระบุได้อย่างชัดเจนตัวเลือกความปลอดภัยของคุณโดยใช้พารามิเตอร์การแม่แบบที่สอง ขณะนี้คุณต้องเปิดเผยการคลาสนี้ใช้COM_INTERFACE_ENTRYแทนCOM_INTERFACE_ENTRY_IMPL?
ATL 3.0 ใช้คำสำคัญคอมไพเลอร์__uuidof ( คลา )เพื่อขอรับ IID สอดคล้องกันสำหรับคลาสที่กำหนด เนื่องจากการเปลี่ยนแปลงในการแมโคร COM_INTERFACE_ENTRYตอนนี้คุณเพียงแค่ใส่หัวข้อสำหรับอินเทอร์เฟซการใช้ แทนยัง เชื่อมโยงไปยังไลบรารีที่กำหนด iid ของตรงกันสำหรับอินเทอร์เฟซที่ การเปลี่ยนแปลงนี้สามารถทำให้เกิดปัญหา หากหัวข้อก่อนหน้านี้ได้ถูกสร้าง โดย MIDL รุ่นเก่า หรือจะถูกเข้า รหัสมือ และไม่ทำเครื่องหมายอย่างเหมาะสม?
ถ้าการประกาศสำหรับอินเทอร์เฟซในส่วนหัวไม่ถูกกำหนดด้วยการเชื่อมโยง__declspec(uuid)แล้วพยายามใด ๆ ในการใช้คำสำคัญ__uuidof()สำหรับอินเทอร์เฟซที่จะล้มเหลว คุณสามารถเปลี่ยนกลับไปแมโคCOM_INTERFACE_ENTRYเก่าสไตล์ (ATL 2.x) ด้วยการกำหนด_ATL_NO_UUIDOFในการตั้งค่าของคุณสร้างเมื่อต้องการแก้ปัญหาลักษณะการทำงานใหม่?
นอกจากการ_ATL_DEBUG_QIและ_ATL_DEBUG_REFCOUNTใน ATL 2.x มีใหม่_ATL_DEBUG_INTERFACESซึ่งจะติดตามไปยังคอนโซลการตรวจแก้จุดบกพร่องใด ๆ รั่วไหลของอินเทอร์เฟซที่ถูก ตรวจพบเมื่อ _Module.Term ถูกเรียก (เมื่อเซิร์ฟเวอร์ปิด)?
ดูเพิ่มเติม
เคล็ดลับในการตรวจแก้จุดบกพร่องสำหรับวัตถุ ATL
| แมโคร | ความคิดเห็น |
| COM_INTERFACE_ENTRY_IMPL | Obsolete แทนที่ด้วยCOM_INTERFACE_ENTRY? |
| COM_INTERFACE_ENTRY_IMPL_IID | Obsolete แทนที่ด้วยCOM_INTERFACE_ENTRY_IID? |
| CHAIN_MSG_MAP_ALT_DYNAMIC | ล้าสมัย และการลบ? |
| BEGIN_PROPERTY_MAP | Obsolete ใช้ใหม่คุณสมบัติแผนที่แมBEGIN_PROP_MAPตามที่อธิบายไว้ในแมโครใหม่? |
| END_PROPERTY_MAP | Obsolete ใช้ใหม่คุณสมบัติแผนที่แมEND_PROP_MAPตามที่อธิบายไว้ในแมโครใหม่? |