ฉันรู้ว่านี่เป็นโพสต์ที่เก่ามาก แต่ฉันได้พบวิธีแก้ปัญหาที่เพิ่งวางขายเร็ว ๆ นี้และเปิดใช้งานฟีเจอร์ Objective-C 2.0 เกือบทั้งหมดบนแพลตฟอร์ม Windows
ด้วยการถือกำเนิดของ gcc 4.6 การสนับสนุนคุณสมบัติภาษา Objective-C 2.0 (บล็อก, ไวยากรณ์จุด, คุณสมบัติสังเคราะห์ ฯลฯ ) ถูกเพิ่มไปยัง Objective-C คอมไพเลอร์ (ดูบันทึกประจำรุ่นสำหรับรายละเอียดทั้งหมด) รันไทม์ของพวกเขายังได้รับการอัปเดตให้ทำงานเกือบจะเหมือนกับ Objective-C 2.0 ของ Apple เอง ในระยะสั้นนี้หมายความว่า (เกือบ) โปรแกรมใด ๆ ที่จะรวบรวมกับ Clang บน Mac อย่างถูกกฎหมายจะรวบรวมด้วย gcc 4.6 โดยไม่มีการดัดแปลง
คุณลักษณะด้านหนึ่งที่ไม่สามารถใช้งานได้คือพจนานุกรม / อาเรย์ / ตัวอักษรอื่น ๆ เนื่องจากมีการเขียนโค้ดลงใน Clang ทั้งหมดเพื่อใช้ NSDictionary ของ Apple, NSArray, NSNumber และคลาสอื่น ๆ
อย่างไรก็ตามถ้าคุณมีความสุขที่จะอยู่ได้โดยปราศจากกรอบที่กว้างขวางของ Apple คุณสามารถทำได้ ดังที่ได้กล่าวไว้ในคำตอบอื่น ๆ GNUStep และ Cocotron จัดหาไลบรารีคลาสของ Apple ที่ได้รับการดัดแปลงหรือคุณสามารถเขียนของคุณเอง (ตัวเลือกที่ฉันต้องการ)
MinGW เป็นวิธีหนึ่งที่จะได้รับ GCC 4.6 บนแพลตฟอร์ม Windows และสามารถดาวน์โหลดได้จากเว็บไซต์ MinGW ตรวจสอบให้แน่ใจเมื่อคุณติดตั้งคุณรวมถึงการติดตั้ง C, C ++, Objective-C และ Objective-C ++ ในขณะที่เป็นตัวเลือกฉันขอแนะนำให้ติดตั้งสภาพแวดล้อม MSYS
เมื่อติดตั้งแล้วซอร์ส Objective-C 2.0 สามารถรวบรวมได้ด้วย:
gcc MyFile.m -lobjc -std=c99 -fobjc-exceptions -fconstant-string-class=clsname (etc, additional flags, see documentation)
MinGW ยังมีการรองรับการคอมไพล์แอพพลิเคชั่น GUI Windows ดั้งเดิมพร้อมการ-mwindows
ตั้งค่าสถานะ ตัวอย่างเช่น:
g++ -mwindows MyFile.cpp
ฉันยังไม่ได้ลอง แต่ฉันคิดว่าถ้าคุณห่อคลาส Objective-C ของคุณใน Objective-C ++ ที่เลเยอร์สูงสุดที่เป็นไปได้คุณควรจะสามารถรวม Windows GUI C ++ และ Objective-C เข้าด้วยกันในโปรแกรม Windows