C++ Academy · Pelajaran

C++ untuk Batas FFI Rust

Sediakan fungsi C++ untuk digunakan melalui FFI Rust dan arah sebaliknya

Pelajaran 3 dari 414 langkah

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.

Gratis untuk memulai

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

  1. Extern C dan ABI C
  2. Memanggil Python dari C++ melalui pybind11
  3. C++ untuk Batas FFI Rust
  4. Menggunakan SWIG untuk Binding Multibahasa
← Kembali ke C++ Academy