Visual Studio-এ Static Linking পুরোপুরি A থেকে Z বুঝিয়ে দিলাম (২০২৬ ভার্সন অনুযায়ী)
Static Linking মানে হলো তোমার প্রজেক্টের EXE ফাইলের মধ্যে লাইব্রেরির কোড পুরোপুরি ঢুকিয়ে দেওয়া। ফলে:
- কোনো
.dllফাইল দরকার হয় না। - অন্য কম্পিউটারে শুধু EXE কপি করলেই চলে।
- সাইজ একটু বড় হয়, কিন্তু পোর্টেবল এবং ডিপেন্ডেন্সি-ফ্রি।
২০২৬ সালেও vcpkg হলো সবচেয়ে সহজ ও শক্তিশালী উপায়।
git clone https://github.com/microsoft/vcpkg.git C:\vcpkg
cd C:\vcpkg
bootstrap-vcpkg.bat(পছন্দমতো পাথে রাখতে পারো, যেমন D:\tools\vcpkg)
vcpkg integrate installএটি করলে Visual Studio স্বয়ংক্রিয়ভাবে vcpkg ডিটেক্ট করবে।
Dynamic (ভুল):
vcpkg install libwebp:x64-windowsStatic (সঠিক):
vcpkg install libwebp:x64-windows-staticঅন্যান্য লাইব্রেরির জন্যও একই:
openssl:x64-windows-staticopencv4:x64-windows-staticffmpeg:x64-windows-staticইত্যাদি।
টিপ: প্রথমবার অনেক সময় লাগতে পারে কারণ সোর্স থেকে বিল্ড হয়।
dir C:\vcpkg\installed\x64-windows-static\lib
dir C:\vcpkg\installed\x64-windows-static\include.lib ফাইলগুলো দেখা উচিত।
- Visual Studio 2026 ওপেন করো।
- Console App বা Empty Project (C++) তৈরি করো।
- Solution Platform → x64 সেট করো (Win32 নয়!)।
Project → Properties (Alt + Enter):
C/C++ → General → Additional Include Directories
C:\vcpkg\installed\x64-windows-static\include
Linker → General → Additional Library Directories
C:\vcpkg\installed\x64-windows-static\lib
Linker → Input → Additional Dependencies
যেমন libwebp-এর জন্য:
libwebp.lib
libsharpyuv.lib
(দরকারে আরও: libwebpdecoder.lib, libwebpdemux.lib ইত্যাদি)
C/C++ → Code Generation → Runtime Library
- Debug → Multi-threaded Debug (/MTd)
- Release → Multi-threaded (/MT)
এটি না করলে VC++ Runtime DLL ডিপেন্ডেন্সি থেকে যাবে।
#include <webp/encode.h>
#include <iostream>
int main() {
std::cout << "WebP Static Linking Successful!\n";
std::cout << "Version: " << WebPGetDecoderVersion() << std::endl;
return 0;
}Build → Rebuild Solution
EXE পাবে: x64\Release\YourApp.exe
এই EXE অন্য যেকোনো Windows PC-তে (একই আর্কিটেকচার) চলবে — কোনো DLL ছাড়াই।
| সমস্যা | সমাধান |
|---|---|
| LNK2019 / unresolved external | লাইব্রেরি নাম ঠিক আছে কিনা চেক করো + x64 প্ল্যাটফর্ম |
| DLL dependency থেকে যায় | Runtime Library /MT করো |
| Header ফাইল পায় না | Include path ভুল |
| অনেকগুলো .lib দরকার | প্রজেক্টের .vcxproj ফাইলে <AdditionalDependencies> দেখো |
| VS 2026-এ vcpkg ইন্টিগ্রেশন ইস্যু | vcpkg integrate install আবার চালাও |
vcpkg install package_name:x64-windows-static- Include path যোগ করো
- Lib path যোগ করো
- প্রয়োজনীয়
.libফাইলগুলো Additional Dependencies-এ যোগ করো - Runtime Library
/MT(Release) //MTd(Debug) - Build
বোনাস টিপস (২০২৬):
- Manifest mode ব্যবহার করলে (
vcpkg.json) আরও আধুনিক ও সুবিধাজনক। - CMake প্রজেক্ট হলে
vcpkg.cmaketoolchain ফাইল ব্যবহার করো — ম্যানুয়াল পাথ সেট করতে হয় না। - একাধিক triplet একসাথে রাখতে চাইলে overlay triplets ব্যবহার করো।
চাইলে কোনো নির্দিষ্ট লাইব্রেরি (যেমন OpenCV, FFmpeg, SDL2) নিয়ে বিস্তারিত স্টেপ দিতে পারি। বলো!
এভাবে ফলো করলে তোমার অ্যাপ্লিকেশন পুরোপুরি statically linked হয়ে যাবে। শুভ কোডিং! 🚀