A bit of order about using external libraries

Hello everyone.
I have successfully added to my project a couple of libraries like: opencv, xsens and libnoise.
I followed this guide OPENCV UE4 and everything works like a charm, but i have a couple of questions because I am not sure what is going under the hood (and that’s bad!)

  • I am not experienced on windows platforms but basically I am pretty sure that a .lib is like a .a and **.dll ** is the like a .so in a linux environment. My point is, under linux i can link against a .so and everything works.
    Why i need to both .lib and .dll under windows? What am I missing?
  • In the linked wiki page at a certain point you need to copy the library you are using in project’s folder i.e Binaries/Win64/ . That’s a mandatory passage otherwise your editor will not start. I did like that for opencv and xsens and everything worked, I deleted those libraries from that folder and the editor could not start anymore. Exactly what I was expecting. The situation changed using libnoise, I can start and use my editor even if I did not copy the libnoise.a and libnoise.dll in such folder. I am missing something here, the question is what.

Thank you so much, I hope to clarify at least this couple of doubts I have (the others can wait!)

Hi Mauriliodc,

Sometimes on windows you can build/include a .lib which contains the call wrappers/init for a .dll rather than create them in code, but I think with OpenCV you can build as a .lib (.a) with no external dll needed (not sure about xsens).

I’ve run into similar things when I’ve accidentally included the DLL wrapper .lib rather than the fully compiled .lib…

How did you get libnoise to work? I also wanted to use it in UE but I can’t build my project because of an ambiguous symbol (int32) caused by the basictypes.h included in libnoise.