Eine DLL Datei ist eine dynamische Bibliothek und muss mit der EXE zusammen ausgeliefert werden. //Windows gcc -c Lib.c -o Lib.o // output = Lib.o gcc -shared Lib.o -o Lib.dll // Output is Lib.dll //Linux gcc -c -fPIC Lib.c -o Lib.o // maybe: -std=c++11 gcc Lib.o -shared -o Lib.so // output is Lib.so Eine statische Bibliothek muss nur zum Kompilieren vorhanden sein, muss aber nicht mit der EXE ausgeliefert werden. gcc -c Lib.c // output = Lib.o ar rcs Lib.lib Lib.o // Output is Lib.lib gcc -c main.c gcc main.o -L. -lLib g++ -c -static -o library.o file1.cpp file2.cpp ar rcs library.a library.o g++ -o ausgabe.exe main.cpp library.a =====Example===== DLL Sourcecode #include __declspec(dllimport) int func(int a, float b) { printf("%d - %f", a, b); return 0; } Program Sourcecode #include typedef int (__cdecl *FUNC)(int, float); int main() { HANDLE dll; FUNC fn; dll = LoadLibrary("MyLib.dll"); fn = (FUNC) GetProcAddress(dll, "myFunc"); int i = (*fn)(1, 1.5f); return 0; } =====Links===== https://www.tenouk.com/ModuleBB.html https://www.geeksforgeeks.org/static-vs-dynamic-libraries/