C kodu kullanarak C kütüphanesi
Verileri yönetme için çeşitli sınıfları sağlayan bir C kütüphanesi var. Kaynak kitaplığı için kod var.
C API kitaplığı aynı zamanda C kodu ve C kodu ile kullanılabilir C işlev çağrıları desteklemek için genişletmek istiyorum.
GNU araç zinciri (gcc, glibc, vs) kullanıyorum, Dil ve mimarisi bir sorun değildir.
Bu yüzden herhangi bir sebep varteknik olarakmümkün değil mi?
Herhangi vardıryakaladımdikkat etmek lazım?
Örnek kod ve/veya belgeleri mevcut kaynakları ile ilgili bu var mı?
Teşekkürler
:GÜNCELLEME:
Ben öğrendim ki başka bir şey:
Aşağıdaki C kodu ile kullanılması gereken C başlıklarını kaydırmak için kullanın.
#ifdef __cplusplus
"C" { . dış ^br>#endif
//
// Kod buraya ...
//
#ifdef __cplusplus
} // dış "C"
#endif
"C. ile birlikte olan ayrı başlık dosyaları C arayüzleri PIMPL principle burada. Sanırım "gerçek tutmak
#ifndef __cplusplus #error
malzeme kullanılarak herhangi bir delilik tespit etmek için burada yardımcı olur.- C dikkatli C kod adları tanımlayıcıları
- Çeteleler C ve C derleyicileri arasında değişik bedenlerde. Muhtemelen bir sorun olursa GNU araç zinciri, ama hala kullanıyorsanız, dikkatli olun.
Yapılar C Karışık değil aşağıdaki formu izleyin.
X { ... } typedef yapı X
- Sonra C nesneler etrafında geçen için işaretçileri kullanın, onlar sadece X C nesnenin bulunduğu yapı X C olarak ilan edilmesi gerekiyor.
Tüm bu C ' de bir sihirbaz olan bir arkadaşım sayesinde .
CEVAP
Evet, bu kesinlikle mümkün değildir. extern "C"
fonksiyonlar bildirir C arabirim katmanı yazmak gerekir:
extern "C" int foo(char *bar)
{
return realFoo(std::string(bar));
}
Sonra, Ara C uygulanan realFoo()
işleve geçecek olan C modülü foo()
diyeceksiniz .
Eğer veri üyeleri ve yöntemleri ile tam bir C sınıfı ortaya çıkarmak için gerekiyorsa, o zaman bu basit bir fonksiyon örneği daha fazla çalışma yapmak gerekebilir.
Nasıl HTML kodu Sublime Text 2 kullana...
Kullanarak " koyuyorsun;sayfa özel...
Nasıl Onaltılık renk kodu kullanarak R...
Nasıl aygıtı belirlemek için ekran boy...
En iyi İpuçları kodu belgelemek için d...