SORU
13 EKİM 2008, PAZARTESİ


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:

  1. 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

  2. "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.

  3. C dikkatli C kod adları tanımlayıcıları
  4. Ç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.
  5. Yapılar C Karışık değil aşağıdaki formu izleyin.

    X { ... } typedef yapı X

  6. 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
13 EKİM 2008, PAZARTESİ


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • androidandme

    androidandme

    10 Mart 2009
  • Lancome USA

    Lancome USA

    30 HAZİRAN 2009
  • Visual Life

    Visual Life

    3 Temmuz 2006