Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengendalikan `dllexport`/`dllimport` dengan Berkesan dalam Perpustakaan Dikongsi Tanpa Bergantung pada `COMPILING_DLL`?

Bagaimanakah Saya Boleh Mengendalikan `dllexport`/`dllimport` dengan Berkesan dalam Perpustakaan Dikongsi Tanpa Bergantung pada `COMPILING_DLL`?

Linda Hamilton
Lepaskan: 2024-11-30 21:23:14
asal
754 orang telah melayarinya

How Can I Effectively Handle `dllexport`/`dllimport` in Shared Libraries Without Relying on `COMPILING_DLL`?

Suis Makro untuk dllexport/dllimport

Apabila bekerja dengan perpustakaan kongsi pada Windows, penentuan makro yang sesuai untuk mengeksport dan mengimport fungsi menjadi perlu. Pendekatan tradisional melibatkan penggunaan makro COMPILING_DLL.

Mentakrifkan COMPILING_DLL

Makro COMPILING_DLL lazimnya tidak ditakrifkan secara eksplisit dan bergantung pada tingkah laku lalai Visual Studio. Secara lalai, ia dianggap ditakrifkan apabila membina projek DLL dan tidak ditentukan apabila menggunakan DLL dalam aplikasi klien. Walau bagaimanapun, pendekatan ini boleh membawa kepada isu apabila menggunakan pemautan dinamik masa muat (LTDL), di mana anda tidak boleh menggunakan pengepala yang sama untuk kedua-dua senario.

Penyelesaian Alternatif

Satu alternatif untuk menggunakan COMPILING_DLL ialah menggunakan makro lalai yang ditakrifkan secara tempatan untuk projek. Secara lalai, Visual Studio mentakrifkan makro seperti MYDLL_EXPORTS dan MYDLL_IMPORTS untuk projek semasa. Makro ini boleh digunakan seperti berikut:

#ifdef  MYDLL_EXPORTS 
    /*Enabled as "export" while compiling the dll project*/
    #define DLLEXPORT __declspec(dllexport)  
#else
    /*Enabled as "import" in the Client side for using already created dll file*/
    #define DLLEXPORT __declspec(dllimport)  
#endif
Salin selepas log masuk

Dalam contoh ini, dengan nama projek ialah "MyDLL," makro MYDLL_EXPORTS akan ditakrifkan semasa membina projek DLL dan tidak ditentukan apabila menggunakannya secara luaran. Dengan memanfaatkan makro lalai ini, anda boleh mentakrifkan makro DLLEXPORT dengan sewajarnya untuk kedua-dua senario tanpa bergantung pada kewujudan COMPILING_DLL.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan `dllexport`/`dllimport` dengan Berkesan dalam Perpustakaan Dikongsi Tanpa Bergantung pada `COMPILING_DLL`?. 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