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

Ayrılık Acısı Hafifler mi?

Aradan zaman geçer, hafiflemesini beklersin, hafifledi zannedersin. Sonra küçücük bir olay olur... Derinlerden hızla gelir... Anında oraya çıkar... Ve bakmışsın ki onca zaman, onca emeğe rağmen hiç de hafiflememiş. Olduğu gibi duruyor. Patlamaya hazır bir bomba gibi içeride, derinlerde duruyor. Öyle bir yerleşmiş ki... Onu ortaya çıkaracak o küçücük olay, ortalığı dağıtmaya yetiyor. Geriye göz yaşları kalıyor... Volkan Özyılmaz

Aşkı Anlatan Engüzel Hikayelerden Pervane İle Mum (2001-08-27 Cumartesi)

Pervane, mum alevinin çevresinde mıknatısi bir güç ile döner durur. Tıpkı sevgilinin mahallesinden ayrılamayan aşık gibi. O kadar ki, gittikçe daha fazla cesaretlenerek daha yakın hareket etmeye, dönerken çizdiği çemberin yarıçapını daraltmaya başlar. Böylece cesareti şevkini artırır, şevki arttıkça da cesaret bulur. Tıpkı sevgilisine yaklaştıkça daha fazla yaklaşmak için bahaneler arayan aşık gibi. Öyle ki, pervane birkaç zaman sonra muma iyice yaklaşmış olur. Bu sefer de onun gerçeğini anlamak ister ve kendısiyle onu aynileştirmek için dönüş çemberini iyice daraltır. Bu da, tıpkı sevgilisine yaklaşınca ona dokunmak, onunla konuşmak, onun sıcaklığını duymak isteyen aşığın haline benzer. Ve nihayet pervane mumun ateşine kanadını uzatır/kaptırır ve yanmanın ne demek olduğunu hakka'l-yakin öğrenir. Önce duyarak/okuyarak, sonra da görerek edindiği yanış bilgisi bu sefer gerçeklik kazanır ve aşk ateşi pervanenin narin vücudunu küle döndürür. Tıpkı aşığın aşk ateşiyle yanıp yakılması v...

İ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