Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 12415|Yanıt: 1

[C] C++ Lib ve Dll'ye referans veren yöntemlerin özeti

[Bağlantıyı kopyala]
Yayınlandı 2.07.2019 17:06:54 | | |
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!





Önceki:1. En yeni ders yazılımlarını oluştur
Önümüzdeki:MFC'nin LPSTR yazı yazısı
Yayınlandı 16.12.2023 13:10:26 |
Istemi:Yazarlar yasaklanır veya kaldırılır, içerik otomatik olarak engellenir
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com