1. Statik bağlantı kütüphanesi LIB nedir ve dinamik bağlantı kütüphanesi DLL'si nedir? Hem statik hem de dinamik bağlantı kütüphaneleri, her ikisi de ikili formatta kod paylaşır
2. Statik bağlantı kütüphanesi LIB ile dinamik bağlantı kütüphanesi DLL arasındaki fark Statik bağlantılı bir kütüphane kullanıyorsanız, lib'deki tüm talimatlar doğrudan ortaya çıkan EXE dosyasına dahil edilir. Dinamik dinamik bağlantı kütüphanesi, EXE dosyası çalıştırıldığında "dinamik" olarak referans edilip kaldırılabilen nihai EXE dosyasına dahil edilmesi gerekmez. Bir diğer fark ise, bir statik bağlantı kütüphanesinin artık diğer dinamik veya statik bağlantı kütüphanelerini içeremeyeceği, dinamik bağlantı kütüphanesinin ise başka dinamik veya statik bağlantı kütüphanelerini içerebilmesidir.
3. Statik bağlantı kütüphanesi çağrı yöntemi: Bir lib dosyası oluşturmak için hayatta kalalım:
VS2017--> Yeni bir proje oluşturun-->windows masaüstü--> statik kütüphane, proje adı Libtest'tir.
Yeni functem.h ve functem.cpp
functem.h:
#pragma bir kez #include "stdafx.h" #ifndef _functem_H #define _functem_H int functem(int a, int b); #endif
functem.cpp:
#include "functem.h" #include "stdafx.h"
int functem(int a, int b)
{ a + b döndür;
} Sonra projeyi oluşturun ve Debug dizininde Libtest.lib ve Libtest.pdb olmak üzere iki dosya olur
Çağrı sırasında üç adım gereklidir:
1. Libtest.lib ve functem.h'yi çağıranın dizinine kopyalayın; aşağıdaki şekilde gösterildiği gibi:
2. Çağıran cpp dosyasının üstüne #include "functem.h" ekleyin
3. Çağıran cpp dosyasının üstüne #pragma yorum (lib, "Libtest.lib") ekleyin
Yukarıdaki şekilde gösterildiği gibi, çağrı başarılı olmuştur.
4. Dinamik bağlantı kütüphanesi çağrı yöntemi: Yeni bir proje oluşturun - Dlltest proje adıyla dinamik bağlantı kütüphanesi >
Yeni bir Dlltest.h oluşturun:
#pragma bir kez #ifndef __CDLL_H__ #define __CDLL_H__ extern "C" int _declspec(dllexport) add(int x, int y); #endif
Dlltest.cpp:
#include "stdafx.h" #include "Dlltest.h" int add(int x, int y)
{ return x + y;
} Projeyi oluşturun, Debug dizininde şunlar var:
Arama süreci:
1. Dlltest.dll, Dlltest.lib ve Dlltest.h adreslerini kopyalayıp arayan kişinin dizinine kopyalayın; aşağıdaki şekilde gösterildiği gibi:
Not: Burada aslında Dlltest.lib sadece derleyici bağlantısını derlerken kullanılır, yani program oluşturulduktan sonra lib dosyasını değil, sadece dll dosyasını ekleyebilirsiniz ve gerçek kullanım aslında dll dosyasıdır. Kısacası, üç dosyanın tamamı kopyalanmalıdır, ancak .h ve .lib bağlantıları derlemek için kullanılır ve yalnızca .dll dosyanın nihai oluşturulan dizine yerleştirilmesi yeterlidir.
2. Çağrılan cpp dosyasının üstüne #include "Dlltest.h" ekleyin
3. Çağıran cpp dosyasının üstüne #pragma yorum (lib, "Dlltest.lib") ekleyin
Çağrı başarılı! --------------------- Yazar: Bird Kaynak: CSDN Orijinal: https://blog.csdn.net/wcc27857285/article/details/84615891 Telif Hakkı Bildirimi: Bu makale blog yazarı tarafından orijinal bir makaledir, lütfen yeniden basmak için blog yazısı bağlantısını ekleyin!
|