This is the mail archive of the pthreads-win32@sources.redhat.com mailing list for the pthreas-win32 project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Problem linking in pthread librarry.... (Newbie)


Ed Hume wrote:

I believe the __imp__ prefix comes from the functions being declared
as DLL imported/exported symbols.  So I think you need to go review
the header files, and fix up some macros in your makefile so that the
__declspec(dllexport) macros are not used.  (For example, have your
definition of PTW_EXTERN)

If that's all that's required, I propose to change the following in pthread.h:-


#ifdef _DLL
#  ifdef PTW32_BUILD
#    define PTW32_DLLPORT __declspec (dllexport)
#  else
#    define PTW32_DLLPORT __declspec (dllimport)
#  endif
#endif

to:-

#ifndef PTW32_STATIC
#  ifdef PTW32_BUILD
#    define PTW32_DLLPORT __declspec (dllexport)
#  else
#    define PTW32_DLLPORT __declspec (dllimport)
#  endif
#endif

And require that PTW32_STATIC be defined explicitly as a compiler flag for both static library build and application build.

Thanks.
Ross


Srdjan wrote:


Hi,

After reading all the readme's and FAQs I still have a bit of a problem
linking with pthread for win32. Somebody might have already solved it...

Here is the problem....

I am porting a small daemon program from linux to win32 (... yes, I
know...). Anyway, becasue this little beast is supposed to be used on
systems that I am unable to install the pthread.dll, I am trying to build a
static pthread library and link it in with my code.


I have fudged building process using VC7.1 (.NET) so it does build a .lib
file, however, when I try linking with my code, I get the following link
problems:


============================================================================
=============
fdca.obj : error LNK2019: unresolved external symbol __imp__pthread_join
referenced in function _main
fdca.obj : error LNK2019: unresolved external symbol __imp__pthread_create
referenced in function _main
fdca_schedule.obj : error LNK2001: unresolved external symbol
__imp__pthread_create
fdca_collect.obj : error LNK2019: unresolved external symbol
__imp__pthread_exit referenced in function _fdca_collect
fdca_command.obj : error LNK2019: unresolved external symbol
__imp__pthread_exit referenced in function _fdca_command
fdca_schedule.obj : error LNK2001: unresolved external symbol
__imp__pthread_exit
ds.lib(ds.obj) : error LNK2019: unresolved external symbol
__imp__pthread_mutex_init referenced in function _ds_list_init
ds.lib(ds.obj) : error LNK2019: unresolved external symbol
__imp__pthread_mutex_unlock referenced in function _ds_list_insert
ds.lib(ds.obj) : error LNK2019: unresolved external symbol
__imp__pthread_mutex_lock referenced in function _ds_list_insert
.\/winagent.exe : fatal error LNK1120: 7 unresolved externals
============================================================================
=============


Now, I am sure I have stuffed up something, but I can't figure out what
(obvious conclusion :-). My code seems to generate '__imp__function_name'
instead of '_function_name'. I have a number of other external static
libraries I am linking with, but they all seem to be linking in happily.


The Makefile with nmake builds only a DLL version, and I am trying at the
moment to get it to build a static lib too, but with not much success.


I would be ethernally grateful if somebody was able to quickly identify what
I am doing wrong.


Cheers,

Srdjan
Melbourne







Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]