public inbox for pthreads-win32@sourceware.org
 help / color / mirror / Atom feed
From: Ross Johnson <rpj@callisto.canberra.edu.au>
To: Ed Hume <hume@hume.com>
Cc: Srdjan <srdjan@jsn.aust.com>, pthreads-win32@sources.redhat.com
Subject: Re: Problem linking in pthread librarry.... (Newbie)
Date: Tue, 13 Jan 2004 06:11:00 -0000	[thread overview]
Message-ID: <40038C25.7060100@callisto.canberra.edu.au> (raw)
In-Reply-To: <3FFD6A6A.3030405@hume.com>

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
>>
>>
>>  
>>
>

  reply	other threads:[~2004-01-13  6:11 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-01-08 12:31 Srdjan
2004-01-08 14:34 ` Ed Hume
2004-01-13  6:11   ` Ross Johnson [this message]
2004-01-08 13:50 Kok YihTzye-CYK011

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=40038C25.7060100@callisto.canberra.edu.au \
    --to=rpj@callisto.canberra.edu.au \
    --cc=hume@hume.com \
    --cc=pthreads-win32@sources.redhat.com \
    --cc=srdjan@jsn.aust.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).