Dağıtımı ve kurulumu kolaylaştırmak için programınızı ayrı bileşenlere modüler hale getirin
Bu parçayı okuyarak, Windows işletim sisteminde kendi paylaşımlı kitaplıklarınızı oluşturmayı öğreneceksiniz. Microsoft tarafından sağlanan belgelere göre bir DLL şu şekildedir:
“… Aynı anda birden fazla program tarafından kullanılabilen kod ve verileri içeren bir kitaplık. Bu, kodun yeniden kullanımını ve verimli bellek kullanımını teşvik etmeye yardımcı olur.
Bir DLL kullanarak, bir program ayrı bileşenlere modüler hale getirilebilir. Örneğin, bir muhasebe programı modül ile satılabilir. Bu modül kuruluysa, her modül çalışma zamanında ana programa yüklenebilir. Modüller ayrı olduğundan, programın yükleme süresi daha hızlıdır ve bir modül yalnızca bu işlevsellik istendiğinde yüklenir. "
DLL kullanan bir program aşağıdaki avantajlara sahiptir:
C / C ++ kodunu çalıştırılabilir dosyalara ve paylaşılan kitaplıklara derlemek için bir yolunuz olduğundan emin olun. Bu proje için derleyici olarak Microsoft Visual Studio Community 2017'yi kullanacağım. C ++ projesi oluşturmanıza izin veren Visual C ++ uzantısını yüklediğinizden emin olun.
Paylaşılan kitaplıklar,
.dllWindows platformunda dinamik bağlantı kitaplıkları ( ) olarak adlandırılır . Diğer platformlarda,
.souzantı kullanılarak paylaşılan nesne olarak tanımlanır .
Visual Studio, yürütülebilir dosyaları derlememize olanak tanıyan kendi Geliştirici Komut İstemi'ni sağlar.
Native Tools Command Prompt for VSVisual Studio dizininde bulun .
Sahip olduğum Python sürümü 64 bit mimariye dayandığından, 64 bit dinamik bağlantı kitaplıklarını derlemek için bu öğreticide x64 kullanıyorum. 32 bit dinamik bağlantı kitaplıkları derliyorsanız, bunu yalnızca 32 bit ortamda kullanabilirsiniz. Açın ve aşağıdaki terminali görmelisiniz.
Bundan önce, kök dizininizde aşağıdaki klasörleri oluşturun.
include- Başlık dosyalarını saklamak için. Üstbilgi dosyaları, derlenen paylaşılan kitaplıklarla nasıl etkileşim kurulacağına ilişkin referans olarak kullanılacaktır. Diğer geliştiriciler kendi programlarını geliştirmek için paylaşılan kitaplıklarınızı kullanmak istiyorsa başlık dosyaları çok önemlidir.
obj- Derleme sırasında oluşturulan geçici obj dosyalarını depolamak için. Bu dosyaları güvenle silebilirsiniz.
src- Fonksiyonlarınızın temel kodunu saklamak için. Dağıtım sırasında bu dosyaları paketin dışında tutacaksınız. Programınızı kullanan müşterilere yalnızca paylaşılan kitaplıklar ve yürütülebilir dosyalar sağlayın.
includeKlasörün içinde adlı yeni bir dosya oluşturalım
add.h. Tercih ettiğiniz herhangi bir ad vermekte özgürsünüz. Açın ve aşağıdaki kodu ekleyin.
#ifndef _ADD_H #define _ADD_H extern "C" { __declspec(dllexport) int add(int, int); __declspec(dllexport) int sub(int, int); __declspec(dllexport) int mul(int, int); } #endif
int add(int, int); int sub(int, int); int mul(int, int);
Başının üzerinde
srcklasöre ve yeni bir dosya oluşturun.
add.cppBasit olması için adlandırıyorum . İçine gerekli kodu uygulayın.
#include "add.h" extern "C" { __declspec(dllexport) int add(int a, int b) { return a + b; } __declspec(dllexport) int sub(int a, int b) { return a - b; } __declspec(dllexport) int mul(int a, int b) { return a * b; } }
Kök dizine geri dönün ve adlı yeni bir dosya oluşturun
main.cpp.
Ondan çalıştırılabilir bir dosya oluşturacağız. Aşağıdaki kodu dosyanın içine yazın. Sadece bazı basit aritmetik hesaplamalarla test etmek istediğimden, buna göre değişiklik yapmaktan çekinmeyin.
#include <iostream> #include "add.h" int main() { std::cout << add(2, 2) << " | " << sub(3, 1) << " | " << mul(3, 3) << std::endl; return 0; }
Daha önce açtığımız komut istemine geri dönün. Yer aldığı kök dizini gösterdiğinden emin olun
main.cpp. Aşağıdaki komutu çalıştırın.
cl /EHsc /c .\src\*.cpp /I .\include /Fo".\obj\\"
/I- Başlık dosyalarının konumu. Varsayılan olarak, .h uzantılı dosyaları içerecektir.
/Fo- Derleme sırasında oluşturulacak geçici obj dosyalarının konumu. Lütfen bu komuttan sonra fazladan boşluk bırakmamanız gerektiğini unutmayın.
Klasörün
app.objiçinde adında yeni oluşturulmuş bir dosya bulabilirsiniz
obj.
Sonraki adım, onu bağlamak ve paylaşılan bir kitaplıklar oluşturmaktır. Komut isteminde aşağıdaki komutu çalıştırın.
link /DLL /OUT:add.dll .\obj\*.obj
Kök klasörde aşağıdaki dosyalara sahip olmalısınız.
add.dll- Programınız için paylaşılan kitaplık. Yürütülebilir dosyanız tarafından karşılık gelen işlevleri çalıştırmak için gereklidir.
add.exp- Dışa Aktarma kitaplığı dosyası. Bu dosyayı güvenle silebilirsiniz.
add.lib- Derleme sırasında yürütülebilir dosya yapmak için gereken statik kitaplık.
Son kısım, çalıştırılabilir dosyayı oluşturmaktır. Aşağıdaki komutu çalıştırın. Derleme için statik kitaplık gerektiği için
.libdosya yerine dosya kullanacağız
.dll, dinamik bağlantı kitaplığı ise derlemeden sonra yürütülebilir dosyayı çalıştırmak için kullanılır.
cl /EHsc main.cpp /Fetest.exe /I .\include /link *.lib
Kök klasörün içinde,
test.exedoğrudan çalıştırabileceğiniz dosyaya sahip olmalısınız.
Programı açtıktan kısa bir süre sonra kapanırsa şaşırmayın. Bunun başlıca nedeni kodu çalıştırmayı bitirmiş ve kendini kapatmış olmasıdır. Çıkışı yakalamak için terminalin içinde çalıştırmayı deneyelim. Sadece yürütülebilir dosyanın adını girin. Uzantı
.exeihmal edilebilir.
test.exe
Aşağıdaki dosyaları kullanım için kolayca dağıtabilirsiniz. Her ikisinin de aynı dizinde bulunduğundan emin olun.
test.exe
add.dll
Kullanıcının yorumlarına göre
g++onu derlemek için de kullanabilirsiniz , ancak biraz çalışma gerektirir. Aşağıdaki talimatlar esas alınmıştır
gccve güncel olmayabilir. Diğer eğitimlere de göz atmanız ve dikkatli bir şekilde ilerlemeniz şiddetle tavsiye edilir.
Linux kullanıcısı için yüklemeniz gerekir
gcc. Öncelikle paket listesini güncelleyin.
sudo apt-get update
sudo apt-get install gcc
sudo apt-get install build-essential
gcc --version
Linux'ta derleme aşağıdaki komutla yapılır.
gccÜstbilgi ve uygulama dosyalarının nasıl bağlanacağına ve buna göre nasıl değiştirileceğine ilişkin belgelere lütfen göz atın.
gcc main.cpp -o main
./main
Bugün öğrendiklerimizi özetleyelim.
Projemiz için bir derleyici kurarak başladık. Bu durumda, Visual C ++ uzantısı ile Microsoft Visual Studio Community 2017'yi kurdum.
Daha sonra, paylaşılan kitaplığımızın temel işlevi olarak hizmet veren C ++ 'da bazı kodlar yazdık. Bundan sonra, kodu a'ya derledik ve
dllondan bir çalıştırılabilir dosya oluşturduk. Beklendiği gibi çalışan işlevselliği test etmek için programı terminalin içinde çalıştırdık.
Ayrıca, Linux platformunda paylaşımlı kitaplıklar kurmak isteyenler için faydalı olabilecek Linux'ta nasıl derleneceğine dair tamamlayıcı bir açıklama yaptım.
Bu parçayı okuduğunuz için teşekkürler. Bir sonraki makalede tekrar görüşmek dileğiyle!
Teknoloji dünyasında, işletmeler sürekli olarak siber suçluların şeytani faaliyetlerinin tuzağına düşme riski altındadır. Endişe verici derecede sık hale gelen böyle bir taktik, kimlik bilgilerini doldurmaktır.
Proje Arka Planı Bir iş teklifi ve kendi alanımda, zamanımda ve tarzımda yeni bir hayata başlama hayaliyle 2019 yılında yeni bir şehre taşındım. Kötü PG durumu göz önüne alındığında, arkadaşım ve ben bir daire kiralamaya karar verdik.
Google UX Design sertifikasını bitirdikten sonra Görsel Tasarımım hala düşük seviyedeydi, Berbattı ve diğer öğrencilerin oldukça benzer çalışmalarını gördüm. Ama bizim suçumuz değil arkadaşlar, Google UX Design sertifikasında bir boşluk olduğu sonucuna vardım ve bugün onu doldurmanıza yardımcı olacağım.
Albert Einstein'ın ilk karısı olan Mileva Maric, kocasının fizik alanındaki çığır açan çalışmasına yaptığı potansiyel katkılarla ilgili olarak uzun süredir spekülasyon ve tartışma konusu olmuştur. Görelilik ve kütle-enerji denkliği teorileriyle evren anlayışımızı sonsuza dek değiştiren Einstein, geniş çapta 20. yüzyılın en etkili bilim adamlarından biri olarak kabul edilirken, Maric'in çalışmalarındaki rolü genellikle göz ardı edildi veya küçümsendi.