C++ untuk Batas FFI Rust
Sediakan fungsi C++ untuk digunakan melalui FFI Rust dan arah sebaliknya
C++ untuk Batas FFI Rust adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.
C++ dan Rust
Rust dan C++ sama-sama merupakan bahasa tingkat rendah yang dikompilasi — tetapi keduanya memiliki ABI dan sistem tipe yang berbeda serta tidak kompatibel. Keduanya biasanya berinteroperasi melalui jembatan ABI C.
Rust ke C++: extern "C"
Ekspor fungsi Rust dengan extern "C" dan #[no_mangle].
// Rust
#[no_mangle]
pub extern "C" fn add(a: i32, b: i32) -> i32 {
a + b
}C++ Memanggil Rust
Deklarasikan fungsi Rust dalam C++ dan tautkan dengan pustaka statis Rust.
// C++
extern "C" int add(int a, int b);
std::cout << add(2, 3);C++ ke Rust
Arah sebaliknya — Rust memanggil C++. Bungkus C++ dalam extern "C" dan deklarasikan dalam Rust.
// C++
extern "C" int multiply(int a, int b) {
return a * b;
}
// Rust
extern "C" {
fn multiply(a: i32, b: i32) -> i32;
}Menautkan Pustaka Statis
Bangun crate Rust sebagai staticlib atau cdylib, lalu tautkan dengan proses build C++.
# Cargo.toml
[lib]
crate-type = ["staticlib"]Bindgen dan Cbindgen
Buat deklarasi FFI secara otomatis:
- bindgen — membuat binding Rust dari header C++
- cbindgen — membuat header C/C++ dari kode Rust
Crate cxx
Crate cxx menyediakan interoperabilitas C++/Rust yang lebih aman dan tingkat tinggi. Deklarasikan skema bersama; cxx membuat binding di kedua sisi dengan pengetikan kuat.
Kepemilikan Memori Melintasi FFI
Kedua bahasa memiliki RAII, tetapi model kepemilikannya berbeda. Teruskan data yang dimiliki berdasarkan nilai dan data pinjaman sebagai penunjuk mentah — lalu dokumentasikan siapa yang membebaskan apa.
String Melintasi FFI
Rust String dan C++ std::string tidak kompatibel. Gunakan *const c_char (diakhiri null) atau (*const u8, usize) (penunjuk + panjang).
Pengecualian vs panic
Panic Rust dan pengecualian C++ tidak dapat melewati FFI dengan aman. Tangkap pengecualian C++ di batas antarmuka; gunakan std::panic::catch_unwind di sisi Rust.
Integrasi Pembangunan
Gunakan sistem pembangunan meta: CMake yang memanggil Cargo, atau Cargo yang memanggil CMake melalui skrip pembangunan (build.rs). Crat cxx menangani pola-pola umum.
Contoh di Dunia Nyata
Banyak basis kode produksi memadukan C++ dan Rust: Mozilla Firefox menggunakan komponen Rust di dalam mesin C++; Chromium bereksperimen dengan modul Rust; banyak pustaka kriptografi menyediakan kedua pengikatan tersebut.
Pemeriksaan Singkat
Atribut Rust apa yang menonaktifkan pengacakan nama agar C/C++ dapat menemukan simbol tersebut?
Ringkasan
Interoperabilitas C++ dan Rust dilakukan melalui ABI C. Gunakan extern "C" dan #[no_mangle]. Buat pengikatan dengan bindgen dan cbindgen, atau gunakan crat cxx untuk jembatan bertipe yang lebih aman. Tangani kepemilikan, string, dan panic dengan hati-hati di seluruh batas antarmuka.
Belajar C++ dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Pertanyaan yang Sering Diajukan
Apakah pelajaran “C++ untuk Batas FFI Rust” gratis?
Ya — teks lengkap “C++ untuk Batas FFI Rust” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “C++ untuk Batas FFI Rust”?
Sediakan fungsi C++ untuk digunakan melalui FFI Rust dan arah sebaliknya Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C++ Academy?
Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “C++ untuk Batas FFI Rust” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Extern C dan ABI C
- Memanggil Python dari C++ melalui pybind11
- C++ untuk Batas FFI Rust
- Menggunakan SWIG untuk Binding Multibahasa