عرض مشاركة واحدة
  #1  
قديم 05-28-2021, 02:23 AM
الصورة الرمزية الادارة كريم
الادارة كريم 
مشرف سابق
 
تاريخ التسجيل: May 2021
الدولة: مصر
المشاركات: 397
معدل تقييم المستوى: 22
الادارة كريم is a splendid one to beholdالادارة كريم is a splendid one to beholdالادارة كريم is a splendid one to beholdالادارة كريم is a splendid one to beholdالادارة كريم is a splendid one to beholdالادارة كريم is a splendid one to beholdالادارة كريم is a splendid one to behold


2 استخدم CodeBlocks لإنشاء مكتبة ارتباطات ديناميكية للغة C واستخدامها

 

استخدم CodeBlocks لإنشاء مكتبة ارتباطات ديناميكية للغة C واستخدامها

أولاً ، قم بإنشاء مكتبة ارتباطات ديناميكية للغة C

1. التأسيس.

File->New->Projects->Dynamic Link library->Go
اسم المشروع: Dynamic_library
حذف main.cpp و main.h في المشروع وإضافة simple.c و simple.h
قم بتعديل الكود بطريقة بسيطة.


كود:
#ifndef SIMPLE_H_INCLUDED
#define SIMPLE_H_INCLUDED

#ifdef __cplusplus
#define EXPORT extern "C" __declspec (dllexport)
#else
#define EXPORT __declspec (dllexport)
#endif // __cplusplus

#include <windows.h>

EXPORT  int pow2(int a);
EXPORT  void upstr(char *str, char *s);

#endif // SIMPLE_H_INCLUDED

قم بتعديل الرمز في simple.c من أجل:


كود:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "simple.h"

int pow2(int a)
{
    return a*a;
}

void upstr(char *str, char *s)
{
    int i;
    for(i = 0; i < strlen(str); i++)
    {
        if(str[i] >= 'a' && str[i] <= 'z')
            s[i] = str[i] - 'a' + 'A';
        else
            s[i] = str[i];
    }
    s[i] = '\0';

}
2. البناء.

بعد اكتمال التجميع ، ابحث عن ملف الدليل للمشروع ، وافتح مكتبة ديناميكية / bin / Debug ويمكنك رؤية libDynamic library.a ، و Dynamic library.dll ، و libDynamic library.def.
ثانيًا ، استدعاء مكتبة الارتباط الديناميكي

1. إنشاء مشروع تطبيق وحدة التحكم

File->New->Projects->Console application -> …,->finish
اسم المشروع: dllTest
أضف "simple.h" إلى المشروع ، وانسخ الرمز من simple.h أعلاه إلى simple.h الحالي.
تعديل main.c:


كود:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "simple.h"

int pow2(int a)
{
    return a*a;
}

void upstr(char *str, char *s)
{
    int i;
    for(i = 0; i < strlen(str); i++)
    {
        if(str[i] >= 'a' && str[i] <= 'z')
            s[i] = str[i] - 'a' + 'A';
        else
            s[i] = str[i];
    }
    s[i] = '\0';

}
2. إضافة ملف مكتبة libDynamic

عادة ، لا يعرف Codeblocks استخدام ملف المكتبة وموقعه ، يجب أن نعلن ملف المكتبة ، حتى لا يرتكب أخطاء عند الربط.
حدد القائمة Project-> Build Options… -> Linker settings-> Add to add libDynamic library.a Library file.

بالإضافة إلى ذلك ، تحتاج أيضًا إلى نسخ ملف Dynamic library.dll المترجم إلى دليل Bin / Debug للمشروع (أي إلى: Dynamic library / bin / Debug directory ).
3.3 تجميع وتشغيل

بعد اكتمال الإضافة ، يمكنك الترجمة والتشغيل ، وستكون النتائج كما يلي:
ملاحظة: هناك بعض الاختلافات بين مكالمات dll و lib. لدعوة دلل ، يجب الانتباه إلى تلبية:
يجب إضافة مكتبة إدخال DLL إلى مشروع برنامج الاختبار. (أي ملف مكتبة)
قم بتضمين ملف رأس DLL في برنامج الاختبار. (# تضمين ".h")
ضع مكتبة DLL في الدليل المناسب. (يتم وضعها في نفس الدليل كملف exe للمشروع في المدونة)


الموضوع الأصلي : استخدم CodeBlocks لإنشاء مكتبة ارتباطات ديناميكية للغة C واستخدامها || الكاتب : الادارة كريم || المصدر : منتدى مجمع التطوير

 

رد مع اقتباس