Ana içeriğe atla

Cpp İçinde Obj-C Kullanmak (2011-07-10 Pazar)

Objective-C bilmiyorum ve eğer mümkün olursa bilmek te istemiyorum :) Fakat yolum cocoa'ya düştü sandım ve bu konuyu araştırdım. Daha sonra Carbon kullandım.

Cplusplus içinde Objectıve-C fonksıyonu çağırmak çok basit. Öncelikle şunu belirteyim, Objective-C içinde C++ kullanabiliyorsunuz. Hemen konuya geçelim. Xcode4 kullanıyorum ve her dosyayı C++ source veya Objective-C source olarak seçebiliyorsunuz. Gerçi kendisi dosya uzantısına göre yaratılırken belirliyor ama isterseniz değiştirebilirsiniz. Bir consol tabanlı C++ projemiz olsun. Bu projenin içine ilk olarak a.m diye bir dosya ekleyelim. Sonra içine şu satırları yazalım:

// a.m

#import ‹Foundation/Foundation.h›

void a_func()
{
NSString *str = @"Test";
NSLog(str);
}

Burada gördüğünüz gibi fonksiyon tanımlamasını C/C++ syntax'ında yaptık. Fakat fonksiyonun içeriği Objective-C formatında. İsterseniz başka bir Objective-C class'ı yazıp buradan o class'ı çağırabilirsiniz.

Şimdi gelelim C++ dosyamıza. b.cpp isminde bir dosya yaratıp projeye ekleyelim. Sonra içine şu satırları yazalım:

// b.cpp

#include ‹iostream›

extern "C" {
void a_func();
}

int main (int argc, const char * argv[])
{
a_func();
return 0;
}

Burada dikkat edilmesi gereken durum extern "C" ifadesidir. Bilindiği gibi bu ifadeyi C++ içinden çağırılacak bir C fonksiyonumuz varsa kullanıyoruz. C ile C++ fonksiyonları farklı şekilde derlerler. Eğer bu belirtilmezse bağlama zamanında linker fonksiyonu bulamaz ve linker error alırsınız.

İşte burada da aynı durum soz konusu. Objective-C içine yazdığınız bir fonksiyon C isimlendirme kurallarına göre hazırlanır.
Artık projeyi derleyip çalıştırabilirsiniz.

Volkan Özyılmaz

Yorumlar

Bu blogdaki popüler yayınlar

İnsana Bazen Öyle Gelir

Ama aslında her öyle gelen öyle değildir. Duygular yanıltıcı olabilir. Eğer eşinizi hergün görüyorsanız, hatta görmekle kalmayıp, yemek yiyorsanız, konuşuyorsanız, sevişiyorsanız, film izliyorsanız, ilerliyorsanız, bir süre sonra duygularınız size ne diyecektir? İşte belki de ara sıra sırra kadem basmak, alışmış duygulara bir TOKAT patlatmak, şöyle bir "ne oluyoruz ya" dedirtmek pek sağlıklı olabilir. Tabii bu sadece eş için değil her türlü sürekli ilişki için geçerli. Bununla beraber ortalıktan kaybolduğunuzda işyerindeki patron neder onu bilemem :) Bazen öyle geldiğinde pozitif de olsa negatif de olsa vereceğiniz tepkiyi düşünmenizde fayda var. Volkan Özyılmaz

Apache 2.2.17 ile Php 5.2.17 Kurulum Problemi (2011-01-25)

Apache'yi kurdunuz, ardından php'yi de Apache'nin conf klasörünü göstererek (httpd.conf dosyasını modifiye etmesi için) extension'ları ile beraber kurdunuz. Apache'nin start tuşuna basınca sunucu(server)'ın çalışmasını bekliyorsunuz. Çok beklersiniz!! İlk olarak httpd.conf dosyasına (genelde sonuna ekliyor) php'nin eklemelerine bakıyorsunuz. Path bilgileri girilmemiş. #BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL PHPIniDir "" LoadModule php5_module "php5apache2_2.dll" #END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL Bu satırları kurulum yaptığınız path (yol) bilgileri ile güncelliyorsunuz. #BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL PHPIniDir "c:/webapps/php" LoadModule php5_module "c:/webapps/php/php5apache2_2.dll" #END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL Bu değişikliği yaptıktan sonra Apache'nin çalışacağını düşünüyorsunuz normal olarak. Ama heyhat! çalışmıyor. Apac...

Bilinçdışıma Parizyenden Müjde (2011-04-14 Perşembe)

İki-üç hafta önce evde arkadaşlarla sohpet halindeydik. Bir yandan da müzik çalıyor. Çalan müziğin kime ait olduğunu merak ettim. Sordum. "Kim çalıyor?". Emile Parisien dediler. Soyadı okunuş olarak bir anda etkiledi, nedense çok beğendim, parizyen. 2-3 dakika sonra kararımı vermiştim. Parizyen isminden harika çorap markası olur diye düşündüm ve düşüncelerimi kelimelere dökerek arkadaşlara da söyledim. Ben söyler söylemez abim "Müjde Parizyen'di galiba" dedi. Meriç onu hemen düzeltti. "Yok o şarkının içindeki kelime, parizyen markanın ismi ." Ben afalladım aslında, galiba parizyen bir çorap markasının ismiydi. Bu kadar tesadüf olamaz diye düşünürken Meriç şarkıyı da patlattı ve söylemeye başladı. "Müjde, müjde size, parizyenden müjde size, zarif, sağlam, esnek çorap...". Evet gerçekler su yüzüne çıkmıştı. Reklamı hatırlamıştım. Müziğini de. Biliç dışımız böyle işte. Geçmişteki bilgilerimizi bize farkında olmadan sürekli çalışıp sunuyor. ...