Avatar ·

كيفية استخدام كود C++ في Go: استدعاء الدوال والكلاسات من C++ عبر C

مرحبًا بالجميع! أكتب بلغة Go منذ حوالي عام، والآن واجهت مهمة حيرتني. لدي مكتبة كبيرة بلغة C++ تنفذ منطقًا معقدًا لمعالجة الصور. أريد استخدامها في مشروع Go الخاص بي، لكني لا أعرف كيفية تنظيم استدعاء دوال C++ من Go بشكل صحيح. قرأت أن Go يمكنه التفاعل مع C عبر cgo، لكن C++ قصة مختلفة تمامًا. جربت كتابة مثال بسيط: يوجد كلاس ImageProcessor بلغة C++ مع دالة process() تستقبل مصفوفة بايت وتعيد النتيجة. أنشأت wrapper بلغة C، لكن عند الربط تظهر أخطاء "undefined reference". إليك مثال كودي: ```go package main /* #include "image_processor.h" */ import "C" import "fmt" func main() { data := []byte{1, 2, 3, 4, 5} result := C.process_image(&data[0], C.int(len(data))) fmt.Println(result) } ``` وملف header بلغة C++: ```cpp // image_processor.h class ImageProcessor { public: int process(unsigned