السلام عليكم,
أنا عندى مكتبة (lib file) و السى/سى++ هيدر بتاعها (.h) و ال .dll بتاعها, و أريد أن أستخدم الدوال و ال structs اللى موجودة فى هذه المكتبة داخل مشروع بالسى شارب, كيف؟
#ليس عندى أى خبرة بال :S managed code
شكرا مقدما.
السلام عليكم,
أنا عندى مكتبة (lib file) و السى/سى++ هيدر بتاعها (.h) و ال .dll بتاعها, و أريد أن أستخدم الدوال و ال structs اللى موجودة فى هذه المكتبة داخل مشروع بالسى شارب, كيف؟
#ليس عندى أى خبرة بال :S managed code
شكرا مقدما.
السلام عليكم ورحمة الله وبركاته
اعمل مثال ل dll فيها function بتجمع رقمين وابعتها وان اشاء الله احاول اساعدك
بس ياريت تكتب الكود الموجود في dll لان انا مش عندي برنامج ++C
للأسف مش أنا اللى عامل المكتبة دى و عمرى ما كتبت dll's أساسا قبل كدة ( =/ كله كان command-line), على العموم ال dll دى تحتوى على exported functions و ليست COM component (إذا كان دا مفيد يعنى!).
السلام عليكم,
اولا نفرض اننا نريد انشاء dll بلغة السي
//mydll.cpp
#include <stdio.h>
// Export funcation
extern "C" __declspec( dllexport ) int Sum(int num1, int num2);
int Sum(int num1, int num2)
{
return (num1 * num2);
}حيث تعيد هذة الدالة حاصل الضرب.
ولعمل Compile لهذا الملف نكتب في مسطر الاوامر هذا الامر
cl /GA /Gz /LD mydll.cpp /link /subsystem:windows /DLL /EXPORT:Sum kernel32.lib
ولأستخدام هذا الـ dll من خلال لغة C Sharp نقوم بتصرح الاتي
[DllImport(@"mydll.dll")] static extern int Sum(int num1, int num2);
ويتم استدعاء الدالة كمايلي
int result = Sum(2, 3);
مممم متشكر جدا يا مودى شرح رائع. حجرب و أقولك إيه النتيجة, بس المشكلة إن ال dll فيه كمية كبيرة أوى من الفنكشنز و ال types
#شكرا أخى بن العيد, أنا كنت فاكر إن فى طريقة خاصة بالسى# لأنى بصراحة ماشى فى مسارين واحد بالسى++ علشان المكتبة natively بتدعم السى و مسار بالسى# علشان ال GUI اللى حيجننى فى السى++ :@