Bagaimanakah Saya Mengawal Nama Fungsi yang Dieksport dalam DLL C?

Susan Sarandon
Lepaskan: 2024-11-17 12:45:02
asal
790 orang telah melayarinya

How Do I Control Exported Function Names in C   DLLs?

Eksport DLL C: Memahami Nama Berhias/Mangled

Dalam C , apabila mencipta DLL dengan fungsi yang dieksport, adalah perkara biasa untuk menemui hiasan atau hancur. nama selepas kompilasi. Ini boleh mengelirukan, kerana ia berbeza daripada nama fungsi yang tidak dihias yang dijangkakan.

Mengapa Nama Berhias?

Hiasan nama fungsi ialah mekanisme yang digunakan oleh penyusun untuk memastikan bahawa tandatangan fungsi adalah unik. Ini amat penting dalam kes di mana berbilang fungsi mempunyai nama yang sama tetapi parameter yang berbeza. Hiasan termasuk maklumat tentang konvensyen panggilan fungsi, jenis parameter dan atribut lain.

Fail Definisi Modul lwn. Eksport Gaya "C"

Kedua-duanya menggunakan definisi modul fail (.def) dan gaya pengeksportan "C" (luaran "C" __declspec(dllexport)) boleh menghasilkan nama yang dihias. Ini kerana kedua-duanya menggunakan format Windows PE yang mendasari, yang memerlukan nama berhias untuk fungsi yang dieksport.

Mengalih keluar Nama Berhias

Untuk mengalih keluar nama yang dihias selepas " =", anda boleh menggunakan arahan #pragma comment(linker). Ini membolehkan anda menentukan nama fungsi yang dieksport dan nama yang dihias untuk diselesaikan.

Sebagai contoh:

#pragma comment(linker, "/EXPORT:SomeFunction=_SomeFunction@@@23mangledstuff#@@@@")
Salin selepas log masuk

Sebagai alternatif, anda boleh menggunakan yang berikut di dalam badan fungsi untuk menjana secara automatik nama berhias:

#pragma comment(linker, "/EXPORT:\"" __FUNCTION__ "\"=\"" __FUNCDNAME__ "\"")
Salin selepas log masuk

Kesimpulan

Nama berhias ialah bahagian yang wujud dalam format Windows PE. Dengan menggunakan arahan #pragma comment(linker), anda boleh menentukan nama fungsi yang dieksport dan nama yang dihias yang akan diselesaikannya, membolehkan anda mengawal cara fungsi yang dieksport muncul dalam output dumpbin.exe.

Atas ialah kandungan terperinci Bagaimanakah Saya Mengawal Nama Fungsi yang Dieksport dalam DLL C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan