Why do people (here) hate 3rd-party DLLs?

BlitzMax Forums/BlitzMax Programming/Why do people (here) hate 3rd-party DLLs?

Brucey(Posted 2014) [#1]
Just aimed at those who do...

The end-user doesn't care if your app/game ships with them, so why should you?

I realise that compiling everything statically is lovely and all, and makes everything into one, neat executable, but sometimes things just don't work like that.

Which I know is somewhat of a contradiction coming from someone who asked for a static exception for OpenB3D's license ( :-p )... but meh.

;-)


Derron(Posted 2014) [#2]
I just like to have it "all in one file", no version conflicts (if you remember the time of "vbrun300" "vbrun400" and what else - and later the directx dlls - especially "directx 9 c" had multiple files which leaded to wrong addresses and crahes).

I know that dynamical linking also means lighter/smaller filesizes (especially when patching/updating things).


Dunno what an enduser (with a bit more knowledge - so people unzipping archives, looking through directories etc.) thinks about ".so" files when on Windows. Maybe they get puzzled when thinking about the potential "task" the files have to fulfill.


Think the most important part keeps to be the "one file"-approach. If using dynlinking, you can also kill the "incbin" command.


bye
Ron


ziggy(Posted 2014) [#3]
I think all this "hate" come from the dll hell era, but as long as you deploy the dll properly, this is completely safe. Also, if some users want to pack all in a single EXE, they still can using incbin and linking to the DLL after extraction to a tmp dir (but be ready to get all kind of AV warnings from Avira).


LT(Posted 2014) [#4]
Does the DLL have an equivalent on EVERY platform?


*(Posted 2014) [#5]
I hate external files with a vengeance quite simply because x version doesn't work on y is revision, its all just one more thing the end user has to debug with the game they just bought.

Yeah I know shipping a game with DLLs is OK but for me I just hate it as you can be sure somewhere along the way some of them will be broken leading to user emails about x file not working.

There are also the officialites who don't like external stuff because its not ratified by BRL or support might get pulled when the user moves on to pastures new and just deletes it. There are loads of users that have moved on and their links become dead links who's to say other modules won't be.

The only external files I use are source modules like minib3d mainly because its source is right there for all to see and play around with.


ziggy(Posted 2014) [#6]
@LT: Yes, usualy so or dylib files, or even jar or class files if you considere the JVM a "system"

@EdzUp: That's why you should deploy the DLL in the same folder as the binarie that links to it. Problem solved. The actual issue comes when people uses a shared location for DLLs pretending them to be compatible on several programs, and updatable without side effects. That's been proved to be a very bad idea, but nobody forces you to do it like this!


GaryV(Posted 2014) [#7]
DLLs are fine, if you wrote them yourself. It is third party DLLs that are a problem for developers.


*(Posted 2014) [#8]
Or its a third party that binary that has to be downloaded externally from the game like OpenAL etc


ziggy(Posted 2014) [#9]
Or its a third party that binary that has to be downloaded externally from the game like OpenAL etc
Yes but... they don't have to. Deploy the dll with your app in the same folder, using the appropriate version and forget about the potential dll hell problem.


xlsior(Posted 2014) [#10]
No dll's is more convenient simply because it allows you to create a single .exe, especially if you also incbin your data files.

HAving extra DLL's means that you need create an actually installer to handle the multiple files necessary for a deployment, or grandma won't be able to get things to work.


col(Posted 2014) [#11]
Personally I think everyone's comments are valid.
There are good and bad reasons, and dll's should be treated as a tool for a means to an end, and as every dev should know - not all tools are suitable for every job.

dll's are great when you have a massive ( edited, doesnt have to be massive at all ) project made up of lots of components that can be maintained separately from each other. There's very little point in having a dll just for the sake of it, as all you'll do is make things more difficult for you and your end users.

Just my 2ps worth.


*(Posted 2014) [#12]
The only reason for external DLLs to me is if they are libraries that cannot be staticly linked into the exe, at all other times they should be after all if they aren't just because the coder can't be bothered then that's just sloppy. Having DLLs for the sake of it will confuse loads of people and lead to problems later or with versions etc.

I prefer no DLLs tbh even my own engine has statically linked DLLs to make just a exe to deploy.


xlsior(Posted 2014) [#13]
To elaborate on my previous posting: No DLLs s is nicer than having to bundle external dependencies, but of course having additional functionality through a DLL is greatly preferable than not having the functionality at all.