Rust FFI Sınırları için C++
C++ işlevlerini Rust FFI tarafından kullanılabilir hâle getirin ve ters yöndeki çağrıları da sağlayın
Rust FFI Sınırları için C++, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.
C++ ve Rust
Rust ve C++, derlenen düşük seviyeli dillerdir — ancak farklı ABI'lere ve uyumsuz tür sistemlerine sahiptir. Genellikle bir C ABI köprüsü aracılığıyla birlikte çalışırlar.
Rust'tan C++'a: extern "C"
Rust işlevlerini extern "C" ve #[no_mangle] ile dışa aktarın.
// Rust
#[no_mangle]
pub extern "C" fn add(a: i32, b: i32) -> i32 {
a + b
}C++'tan Rust Çağırma
Rust işlevini C++'ta bildirin ve Rust statik kitaplığıyla bağlayın.
// C++
extern "C" int add(int a, int b);
std::cout << add(2, 3);C++'tan Rust'a
Ters yönde — Rust, C++'ı çağırır. C++ kodunu extern "C" içine alın ve Rust'ta bildirin.
// C++
extern "C" int multiply(int a, int b) {
return a * b;
}
// Rust
extern "C" {
fn multiply(a: i32, b: i32) -> i32;
}Statik Kitaplıkları Bağlama
Rust paketini bir staticlib veya cdylib olarak derleyin ve C++ derlemesiyle bağlayın.
# Cargo.toml
[lib]
crate-type = ["staticlib"]Bindgen ve Cbindgen
FFI bildirimlerini otomatik olarak oluşturun:
- bindgen — C++ başlıklarından Rust bağlamaları oluşturur
- cbindgen — Rust kodundan C/C++ başlıkları oluşturur
cxx Paketi
cxx paketi daha güvenli ve daha üst düzey C++/Rust birlikte çalışabilirliği sağlar. Paylaşılan bir şema tanımlayın; cxx, güçlü tür denetimiyle her iki taraftaki bağlamaları oluşturur.
FFI Sınırında Bellek Sahipliği
Her iki dilde de RAII vardır, ancak sahiplik modelleri farklıdır. Sahip olunan verileri değer olarak, ödünç alınan verileri ham işaretçi olarak geçirin — neyi kimin serbest bırakacağını belgeleyin.
FFI Sınırında Dizeler
Rust String ile C++ std::string uyumsuzdur. *const c_char (null sonlandırmalı) veya (*const u8, usize) (işaretçi + uzunluk) kullanın.
İstisnalar ve panikler
Rust panikleri ile C++ istisnaları FFI sınırını güvenli bir şekilde geçemez. C++ istisnalarını sınırda yakalayın; Rust tarafında std::panic::catch_unwind kullanın.
Derleme Entegrasyonu
Üst düzey bir derleme sistemi kullanın: Cargo'yu çağıran CMake veya bir derleme betiği aracılığıyla CMake'i çağıran Cargo (build.rs). cxx paketi yaygın kalıpları yönetir.
Gerçek Dünya Örnekleri
Birçok üretim kod tabanı C++ ile Rust'ı birlikte kullanır: Mozilla Firefox, bir C++ motorunun içinde Rust bileşenleri kullanır; Chromium, Rust modüllerini denemektedir; birçok şifreleme kütüphanesi her iki dil için de bağlama kodları sağlar.
Hızlı Kontrol
C/C++'ın simgeyi bulabilmesi için ad değiştirmeyi devre dışı bırakan Rust özniteliği hangisidir?
Özet
C++ ile Rust, C ABI'si aracılığıyla birlikte çalışır. extern "C" ve #[no_mangle] kullanın. bindgen ve cbindgen ile bağlama kodları üretin veya daha güvenli, tür denetimli köprüler için cxx paketini kullanın. Sınırdan geçerken sahipliği, dizeleri ve panikleri dikkatle yönetin.
Sıkça Sorulan Sorular
“Rust FFI Sınırları için C++” dersi ücretsiz mi?
Evet — “Rust FFI Sınırları için C++” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.
“Rust FFI Sınırları için C++” dersinde ne öğreneceğim?
C++ işlevlerini Rust FFI tarafından kullanılabilir hâle getirin ve ters yöndeki çağrıları da sağlayın C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C++ Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Rust FFI Sınırları için C++” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Extern C ve C ABI'si
- pybind11 ile C++'tan Python Çağırma
- Rust FFI Sınırları için C++
- Çok Dilli Bağlamalar için SWIG Kullanımı