วันศุกร์ที่ 15 ตุลาคม พ.ศ. 2553

ค้นหา NXConstantString ไม่พบ (ภาษา Objective-C)

โค้ดด้านล่างตั้งชื่อว่า "Program2_1.m" บันทึกไว้ ณ D:\MyObjectiveC มีรายละเอียดดังนี้

และ Compile ด้วย Shell ได้ผลลัพธ์เป็น
ผลการ Compile แจ้งว่า
In function 'main' :
error find interface declaration for 'NXConstantString'


ให้เพื่อนๆเพิ่มคำสั่งต่อไปนี้ต่อท้ายชุดคำสั่งเดิม
-fconstant-string-class=NSConstantString

ทดสอบ Compile อีกครั้ง... คราวนี้ไม่ error แต่กลับเจอ Warning แทนดังรูป

ไม่ต้องกังวลไปครับ เราต่างทราบกันดีว่าหากโปรแกรมไม่เกิด Error ผลลัพธ์ (ในที่นี้คือ Program2_1.exe) ย่อมเกิดขึ้น และสามารถสั่ง Run ได้ ทว่าต้องพึ่งระวังเหตุ (Warning) อื่นๆที่อาจทำให้โปรแกรมทำงานไม่สมบูรณ์ในภายหลัง (ซึ่งภาษา Java และ C# เข้มงวดมาก)

หลังจากอ่าน Warning พอทราบว่า Compiler พยายามเชื่อมโยงคลาสชื่อ NSAutoreleasePool ที่เราอ้างถึงในโค้ดกับตัวต้นแบบซึ่งถูกเก็บไว้ภายในเครื่องของเรา (Framework) ให้เราเพิ่มคำสั่ง -enable-auto-import ต่อท้ายเข้าไปอีก รวมทั้งหมดจึงเขียนคำสั่งสั่ง Compile ดังนี้ครับ

gcc -o Program2_1 Program2_1.m
-I 'C:/Program Files/GNUstep/GNUstep/System/Library/Headers/'
-L 'C:/Program Files/GNUstep/GNUstep/System/Library/Libraries/'
-lobjc -lgnustep-base
-fconstant-string-class=NSConstantString
-enable-auto-import


***หมายเหตุ คำสั่งข้างต้นเมื่อพิมพ์ใน Shell ให้พิมพ์ติดต่อเนื่องกันไปเลยนะครับ (คัดลอกไปวางก็ไม่ได้นะ) ดังรูป

ทดสอบสั่ง Run

ไม่มีความคิดเห็น:

แสดงความคิดเห็น