[ENet-discuss] Linker errors when NOT compiling as a lib (embedded) [with suggested fix]
fuzzyspoon at gmail.com
Wed Nov 24 15:30:49 PST 2010
Nice, thanks for posting too.
To continue on my embedding spree of random linker errors, these ones only
show up in release builds for me :
host.obj : error LNK2019: unresolved external symbol _enet_list_clear
referenced in function _enet_host_create
peer.obj : error LNK2001: unresolved external symbol _enet_list_clear
protocol.obj : error LNK2001: unresolved external symbol _enet_list_clear
peer.obj : error LNK2019: unresolved external symbol _enet_list_remove
referenced in function _enet_peer_receive
protocol.obj : error LNK2001: unresolved external symbol _enet_list_remove
peer.obj : error LNK2019: unresolved external symbol _enet_list_insert
referenced in function _enet_peer_queue_acknowledgement
protocol.obj : error LNK2001: unresolved external symbol _enet_list_insert
peer.obj : error LNK2019: unresolved external symbol _enet_list_move
referenced in function _enet_peer_dispatch_incoming_unreliable_commands
There are multiple ways to fix this, for the people looking for a really
Add the following to the top of host.c
#if(ENET_BUILDING_LIB != 1)
#endif /* !ENET_BUILDING_LIB */
This is a dirty fix, i will post a cleaner fix if i can get around to it.
On Wed, Nov 24, 2010 at 6:41 PM, Nicholas J Ingrassellino <
nick at lifebloodnetworks.com> wrote:
> It is awesome that you posted this. Thank you. In this spirit I will post
> something I was struggling with.
> I had an issue using ENet with Allegro with Visual C++ 9. The headers need
> to be:
> #define _WINSOCKAPI_
> #define ALLEGRO_STATICLINK
> #define ALLEGRO_NO_ASM
> #include <allegro.h>
> #include <winalleg.h>
> #include <enet/enet.h>
> and the libs needs to be
> alleg_s_crt.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib ole32.lib
> dinput.lib ddraw.lib dxguid.lib winmm.lib dsound.lib enet.lib ws2_32.lib
> Any other order in the headers threw a mess of unresolved external symbols
> which took me a decent amount of time to figure out. As you can probably
> tell I am statically linking Allegro. This should also work with Allegro
> being dynamically linked (obviously with *#define ALLEGRO_STATICLINK*removed).
> Nicholas J Ingrassellino
> LifebloodNetworks.com <http://www.lifebloodnetworks.com/> ||
> nick at lifebloodnetworks.com
> "The idea that I can be presented with a problem, set out to logically
> solve it with the tools at hand, and wind up with a program that could not
> be legally used because someone else followed the same logical steps some
> years ago and filed for a patent on it is horrifying."
> - John Carmack on software patents
> On 11/24/2010 08:43 AM, fuzzy spoon wrote:
> Steps to reproduce :
> Drop code into existing solution.
> Make sure you are linking to WS2_32.lib and Winmm.lib
> Make sure that you have defined WIN32_LEAN_AND_MEAN
> Problem : Linker errors ( timeBeginPeriod etc from winmm.lib, called from
> Fix: Due to WIN32_LEAN_AND_MEAN , mmsystem.h is no longer included in the
> chain that enet relied on before.
> At the top of win32.h, Line 18 (added underneath the other includes).
> #ifdef WIN32_LEAN_AND_MEAN
> #include <mmsystem.h>
> #endif /* WIN32_LEAN_AND_MEAN */
> Hopefully this will save someone some time.
> ENet-discuss mailing listENet-discuss at cubik.orghttp://lists.cubik.org/mailman/listinfo/enet-discuss
> ENet-discuss mailing list
> ENet-discuss at cubik.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the ENet-discuss