[Ace-users] [ace-bugs] Unresolved symbols when linking to Windows application

Stew Paddaso stew.paddaso at gmail.com
Tue Jun 19 11:48:50 CDT 2007


ACE VERSION:
     5.5.1

HOST MACHINE AND OPERATING SYSTEM:
     Intel Pentium 4
     Windows Vista
     VS2005 (VS8)

"config.h" FILE:
     #include "ace/config-win32.h"

AREAS AFFECTED:
     My application only

SYNOPSIS:
     I get several "unresolved external symbol" errors when linking my
application to ACE.

DESCRIPTION:
     - Built ACE using the provided VS8 solution.
     - Created application that uses ACE in seperate VS8 solution.
          - Added additional include directory that points to $ACE_ROOT/ace
          - Added additional library search path that points to
location of ACE.lib and ACE.dll
          - Added dependency to ACE.lib
     - The linker correctly locates ACE.lib and resolves some of the
symbols, except the following 5:

1>main.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: __thiscall
ACE_Thread_Mutex::ACE_Thread_Mutex(wchar_t const *,struct
ACE_mutexattr_t *)"
(__imp_??0ACE_Thread_Mutex@@QAE at PB_WPAUACE_mutexattr_t@@@Z) referenced
in function "public: __thiscall ThreadArgs::ThreadArgs(int)"
(??0ThreadArgs@@QAE at H@Z)
1>thread.obj : error LNK2001: unresolved external symbol
"__declspec(dllimport) public: __thiscall
ACE_Thread_Mutex::ACE_Thread_Mutex(wchar_t const *,struct
ACE_mutexattr_t *)"
(__imp_??0ACE_Thread_Mutex@@QAE at PB_WPAUACE_mutexattr_t@@@Z)
1>main.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: __thiscall
ACE_Thread_Barrier::ACE_Thread_Barrier(unsigned int,wchar_t const *)"
(__imp_??0ACE_Thread_Barrier@@QAE at IPB_W@Z) referenced in function
"public: __thiscall ThreadArgs::ThreadArgs(int)"
(??0ThreadArgs@@QAE at H@Z)
1>main.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: wchar_t const * __thiscall
ACE_Get_Opt::long_option(void)const "
(__imp_?long_option at ACE_Get_Opt@@QBEPB_WXZ) referenced in function
"void __cdecl process_command_line(int,char * * const,struct
_PROGRAM_ARGS_ &)"
(?process_command_line@@YAXHQAPADAAU_PROGRAM_ARGS_@@@Z)
1>main.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: int __thiscall
ACE_Get_Opt::long_option(wchar_t const *,enum
ACE_Get_Opt::OPTION_ARG_MODE)"
(__imp_?long_option at ACE_Get_Opt@@QAEHPB_WW4OPTION_ARG_MODE at 1@@Z)
referenced in function "void __cdecl process_command_line(int,char * *
const,struct _PROGRAM_ARGS_ &)"
(?process_command_line@@YAXHQAPADAAU_PROGRAM_ARGS_@@@Z)
1>main.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: __thiscall
ACE_Get_Opt::ACE_Get_Opt(int,wchar_t * *,wchar_t const
*,int,int,int,int)" (__imp_??0ACE_Get_Opt@@QAE at HPAPA_WPB_WHHHH@Z)
referenced in function "void __cdecl process_command_line(int,char * *
const,struct _PROGRAM_ARGS_ &)"
(?process_command_line@@YAXHQAPADAAU_PROGRAM_ARGS_@@@Z)

     - The results do NOT change when I define __ACE_INLINE__
     - If I don't specify ACE.lib as a dependency, many more symbols
can't be resolved (23 total).
     - My application is small, and only including OS.h, Get_Opt.h,
Thread.h, and Synch.h.
     - I am including the ACE headers before any others.
     - I have compared solution settings between ACE and my app, but
don't see any obvious differences.
     - ACE.lib and ACE.dll are located in a folder specified on my $PATH.
     - I also copied ACE.dll to C:\Windows.
     - There are no other versions of ACE on the system.



More information about the Ace-users mailing list