From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8589 invoked by alias); 13 Jan 2004 06:11:32 -0000 Mailing-List: contact pthreads-win32-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: pthreads-win32-owner@sources.redhat.com Received: (qmail 8574 invoked from network); 13 Jan 2004 06:11:25 -0000 Received: from unknown (HELO real.ise.canberra.edu.au) (137.92.140.34) by sources.redhat.com with SMTP; 13 Jan 2004 06:11:25 -0000 Received: from callisto.canberra.edu.au (special.ise.canberra.edu.au [137.92.140.39]) by real.ise.canberra.edu.au (8.11.6/8.11.6) with ESMTP id i0D6BF702059; Tue, 13 Jan 2004 17:11:15 +1100 Message-ID: <40038C25.7060100@callisto.canberra.edu.au> Date: Tue, 13 Jan 2004 06:11:00 -0000 From: Ross Johnson Reply-To: rpj@callisto.canberra.edu.au User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20030225 MIME-Version: 1.0 To: Ed Hume CC: Srdjan , pthreads-win32@sources.redhat.com Subject: Re: Problem linking in pthread librarry.... (Newbie) References: <3FFD6A6A.3030405@hume.com> In-Reply-To: <3FFD6A6A.3030405@hume.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2004/txt/msg00009.txt.bz2 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 >> >> >> >> >