Rumah >pembangunan bahagian belakang >C++ >Bolehkah C# Memanggil Perpustakaan C Seperti RakNet?

Bolehkah C# Memanggil Perpustakaan C Seperti RakNet?

Barbara Streisand
Barbara Streisandasal
2025-01-14 08:08:44212semak imbas

Can C# Call C   Libraries Like RakNet?

Memanggil kod C dalam C#: Penyelesaian C/CLI

Soalan:

Bolehkah saya menyepadukan kod C ke dalam bahasa .NET seperti C#? Secara khusus, bolehkah saya menggunakan perpustakaan C (seperti RakNet) dalam C#?

Jawapan:

Ya. Anda boleh menggunakan himpunan pembalut C/CLI (Common Language Infrastructure) untuk memanggil kod C daripada C#. C/CLI membenarkan penyepaduan yang lancar antara kod tidak terurus dan terurus.

Langkah untuk mencipta himpunan pembalut C/CLI:

  1. Kompilasi kod C asli: Susun kod C (seperti perpustakaan RakNet) untuk dipanggil daripada C# menggunakan suis "/clr" untuk menjana fail perpustakaan kod (.dll).
  2. Buat himpunan C/CLI: Cipta projek C/CLI baharu dalam IDE pilihan anda.
  3. Tentukan fungsi P/Invoke: Gunakan pengisytiharan P/Invoke untuk mengimport kod C asli ke dalam himpunan C/CLI. Pengisytiharan ini membolehkan kod terurus untuk mengakses fungsi tidak terurus.
  4. Buat kelas terurus: Merangkum fungsi P/Invoke dalam kelas terurus yang bertindak sebagai antara muka antara C dan C#.

Contoh:

Ini ialah contoh pemasangan pembalut C/CLI yang dipermudahkan untuk kelas NativeType:

<code class="language-c++">#include "NativeType.h"

public ref class ManagedType
{
     NativeType*   NativePtr; 

public:
     ManagedType() : NativePtr(new NativeType()) {}
     ~ManagedType() { delete NativePtr; }

     void ManagedMethod()
      { NativePtr->NativeMethod(); } 
};</code>

Mengintegrasikan pembalut dalam C#:

Dalam kod C# anda, tambahkan rujukan kepada himpunan terurus yang mengandungi kelas pembalut. Anda kemudiannya boleh membuat contoh kelas terurus dan memanggil kod C:

<code class="language-csharp">ManagedType mt = new ManagedType();
mt.ManagedMethod();</code>

Nota: Untuk contoh dan panduan yang lebih terperinci, lihat catatan blog yang disediakan untuk arahan tambahan.

Atas ialah kandungan terperinci Bolehkah C# Memanggil Perpustakaan C Seperti RakNet?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn