Saran untuk menggunakan Delphi untuk membuat file multiplexed DLL
Cobalah untuk menggunakan antarmuka DLL standar. Ini berarti bahwa tipe parameter dan tipe pengembalian fungsi yang dilewati tidak dapat unik untuk Delphi, seperti String (Ansistring), serta array dinamis dan tipe komposit (seperti catatan) yang berisi jenis anggota ini, juga tidak dapat berisi anggota data dari Jenis anggota ini. Jika Anda menggunakan jenis string atau jenis array dinamis dan penelepon bukan program Delphi, Anda pada dasarnya akan melaporkan kesalahan. Kesalahan juga dapat terjadi jika penelepon adalah Delphi tetapi penelepon atau callee tidak berada di unit yang berisi pertama dari file proyek, yang bukan sharemem.
Jika penelepon adalah aplikasi Delphi, Anda mungkin dapat menggunakan objek yang tidak mengandung anggota data dari tipe yang dilarang (string, array dinamis) sebagai parameter atau nilai pengembalian, tetapi juga harus dihindari sebanyak mungkin.
Jika penelepon dan pihak yang dipanggil keduanya adalah program Delphi dan perlu menggunakan string atau array dinamis sebagai parameter, unit inklusi pertama dari file proyek antara kedua pihak harus sharemem. (Program C ++ Builder mungkin sama, tetapi belum diuji.)
Jika penelepon bukan program Delphi, string, array dinamis, tipe data gabungan dan instance kelas yang mengandung string atau array dinamis tidak dapat digunakan sebagai parameter atau nilai pengembalian.
Oleh karena itu, untuk meningkatkan rentang DLL multiplexing dan menghindari kemungkinan kesalahan, jenis parameter standar Win32 standar harus digunakan sebelumnya. Array dinamis dikonversi ke tipe pointer (@Array [0]) dan tambahkan panjang array.
Jika penelepon dan pihak yang dipanggil sama -sama program Delphi dan tidak ingin melakukan konversi di atas untuk kenyamanan penulisan, disarankan untuk menggunakan bentuk paket runtime. Paket runtime dapat memastikan pelepasan data yang dialokasikan secara dinamis. Dengan cara ini, karena ekstensi (.bpl), ia menunjukkan bahwa file tersebut terbatas pada pembangun Delphi/C ++ (tidak seperti DLL).
Kedua, cobalah untuk menghindari menggunakan fungsi/proses yang berlebihan sebanyak mungkin. dan metode di Delphi, seperti CreateByDefaultFile dan CreateDefault.
Akhirnya, sebagai penyedia DLL, Anda harus menyediakan file antarmuka pemrograman langsung seperti .pas atau .dcu di delphi (lebih disukai .pas, karena bisa ada komentar), .h dan .lib di c dan c ++. Alih -alih membiarkan pengguna membuatnya sendiri. Ini sangat penting jika Anda harus memiliki fungsi/proses yang berlebihan. Selain itu, sebagai aplikasi Delphi, file .pas yang disediakan dapat dihubungkan sebelumnya (menggunakan eksternal untuk menentukan fungsi output di DLL) atau lebih baru (menggunakan LoadLibrary dan GetProcaddress). menunjukkan bahwa itu formal (atau hiqos), dan dijamin.