Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

why do game engines prefer static libraries over dynamic link libraries

Tags:

I've been reading a few gaming books. And they always prefer to create the engine as a static library over dynamic link. I am new to c++ so I am not highly knowledge when it comes to static libraries and dynamic link libraries. All I know is static libraries increase the size of your program, where DLL link libraries are loaded as you need them within your program.

[edit]

I've played games where it almost seemed they used DLL's to load in sound, lighting, and what not all individually. as the level was loading up. cause you don't necessarily need that when your at the game menu.

like image 988
numerical25 Avatar asked Apr 27 '10 15:04

numerical25


People also ask

What are the advantages of a static library over a dynamic library?

Another benefit of using static libraries is execution speed at run-time. Because the it's object code (binary) is already included in the executable file, multiple calls to functions can be handled much more quickly than a dynamic library's code, which needs to be called from files outside of the executable.

Which is better static or dynamic library?

In C exist two kinds of libraries the first ones are the static that allows us to link to the program and are not relevant during the runtime, and the other ones are called dynamic libraries those are preferable use when you run a lot of programs at the same time who are using the same library and you want to be more ...

What is advantage of static linking over dynamic linking?

When the functions in a DLL change, the applications that use them do not need to be recompiled or relinked as long as the function arguments, calling conventions, and return values do not change. In contrast, statically linked object code requires that the application be relinked when the functions change.

Which is better static linking or dynamic linking?

The main difference between static and dynamic linking is that static linking copies all library modules used in the program into the final executable file at the final step of the compilation while, in dynamic linking, the linking occurs at run time when both executable files and libraries are placed in the memory.


2 Answers

Dynamic link libraries need to be position independent; this can cause performance inefficiencies on some processor architectures.

Static libraries can be optimized when included in your program, e.g., by stripping dead code. This can improve cache performance.

like image 52
Doug Currie Avatar answered Sep 22 '22 05:09

Doug Currie


By position independent, he means that since the game engine and DLL are completely separated, the DLL is stand-alone and cannot be interwoven into the game engine code, whereas statically linking a library allows the compiler to optimize using both your game engine code AND the library code.

For example, say there's a small function that the compiler thinks should be inlined (copied directly in place of a function call). Then with a static library, the compiler would be able to inline this code, since it knows what the code is (you're linking at compile-time). However, with a dynamic library, the compiler would be unable to inline that code, since it does not know what the code is (since it will be linking at run-time).

like image 39
foxwoods Avatar answered Sep 18 '22 05:09

foxwoods