استدعاء وظائف مكتبة Linux المشتركة في Go
في هذا السؤال، يسعى المطور للحصول على المساعدة في استدعاء الوظائف من كائن مشترك (.so) ملف داخل رمز Go الخاص بهم. تعمل حزمة ctypes في Python، والتي تتيح الوصول إلى وظائف C، بمثابة الوظيفة المطلوبة.
استخدام cgo لتحميل المكتبة المشتركة الثابتة
لاستدعاء الوظائف بشكل ثابت مكتبة مشتركة معروفة في وقت الترجمة، يمكن للمرء استخدام حزمة CGO. فيما يلي مثال للوصول إلى وظيفة bar() من libfoo.so:
package example
// #cgo LDFLAGS: -lfoo
//
#include
import "C"
func main() {
C.bar()
}
تحميل المكتبة المشتركة الديناميكية باستخدام cgo
وبدلاً من ذلك، يمكن لـ cgo تسهيل الوصول إلى الكائنات المشتركة التي يتم تحميلها ديناميكيًا في وقت التشغيل. يحتاج المرء إلى استخدام الوظائف dlopen() وdlsym() وdl Close() لفتح المكتبة المشتركة واسترداد عناوين الوظائف وإغلاق المكتبة. ومع ذلك، هذه الوظائف غير مدعومة أصلاً بواسطة Go وتتطلب برنامج تضمين C لتنفيذ المنطق الضروري.تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3