นี่เป็นครั้งแรกที่ฉันพยายามส่งออกคลาสจาก dll สิ่งที่ฉันทำคือ: - สร้างอินเทอร์เฟซ (เฉพาะวิธีการเสมือนเท่านั้น) - ใช้อินเทอร์เฟซนี้ใน dll ด้วยคลาสที่จะไม่ถูกส่งออก - คลาสมีวิธีการปล่อยที่เรียกลบบนตัวชี้นี้ - สร้างคลาสโรงงาน ด้วยวิธีการคงที่ที่ส่งคืนตัวชี้ไปยังคลาสที่เป็นรูปธรรม แต่เป็นอินเทอร์เฟซ คลาสนี้ถูกส่งออก - การลบอ็อบเจ็กต์ที่ส่งคืนทำได้โดยการเรียกเมธอด release
ฉันรวบรวมทั้งหมดนี้จากบทช่วยสอนนี้เกี่ยวกับคลาสใน dll
ปัญหาคือเมื่อฉันใช้ dll นี้ในโครงการอื่น ทุกอย่างจะโอเคจนกว่าฉันจะเรียกใช้ฟังก์ชัน release บนออบเจ็กต์ จากนั้นจะแสดงหน้าต่างการยืนยันล้มเหลวพร้อมข้อความ "_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));"
สิ่งนี้เกิดขึ้นกับคนอื่นหรือไม่? ฉันรู้ว่ามันง่ายพอ ๆ กับการลืมใช้ std:: เมื่อคุณเริ่ม C++ แต่อย่างที่ฉันบอกว่าฉันเพิ่งเริ่มสิ่งนี้
ขอบคุณ!