31
General / "Absorving" SFML into one DLL - MSVC
« on: January 30, 2011, 02:29:11 am »
I've got a problem and i am not sure where it is coming from...
I am building an engine, that engine is one DLL file, so when i build my project, i use it from the applications linking against engine.lib and then putting engine.dll in the same directory.
Now the problem: when i build, i link the DLL against sfml2 static libraries, and i get unresolved externals.
I am not sure what is causing this, in theory i can simply make my dll swallow all the static .lib it depends on, right? So the end user only uses engine.lib and engine.dll, without the need to know anything about sfml..And still have the sfml api exposed if he wants to use it.
I think i may be missing some knowledge on how to work with DLL's, if anyone could brief me shortly i'd appreciate.
Other issue is when i export a class which has a vector or string member, i get a compiler warning, and when i compile sfml, which does the same thing here and there, no warnings... What am i doing wrong? :O
Thanks
I am building an engine, that engine is one DLL file, so when i build my project, i use it from the applications linking against engine.lib and then putting engine.dll in the same directory.
Now the problem: when i build, i link the DLL against sfml2 static libraries, and i get unresolved externals.
Code: [Select]
1>PerceptionDisplay.obj : error LNK2001: unresolved external symbol "private: virtual void __thiscall sf::Window::OnEvent(class sf::Event const &)" (?OnEvent@Window@sf@@EAEXABVEvent@2@@Z)
1>PerceptionDisplay.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall sf::RenderTarget::Draw(class sf::Drawable const &)" (?Draw@RenderTarget@sf@@UAEXABVDrawable@2@@Z)
1>VisionPrimitives.obj : error LNK2001: unresolved external symbol "public: unsigned int __thiscall sf::Shape::GetNbPoints(void)const " (?GetNbPoints@Shape@sf@@QBEIXZ)
I am not sure what is causing this, in theory i can simply make my dll swallow all the static .lib it depends on, right? So the end user only uses engine.lib and engine.dll, without the need to know anything about sfml..And still have the sfml api exposed if he wants to use it.
I think i may be missing some knowledge on how to work with DLL's, if anyone could brief me shortly i'd appreciate.
Other issue is when i export a class which has a vector or string member, i get a compiler warning, and when i compile sfml, which does the same thing here and there, no warnings... What am i doing wrong? :O
Code: [Select]
needs to have dll-interface to be used by clients of class 'pE::PackageHeader'
Thanks