This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin 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: 1.3.12-2 how to link with MS Platform SDK


OK, so now you know that the library contains a function you want to 
link with and it uses the C calling convention (cdecl).  Apparently the 
include files you're using are giving you the Windows standrd convention 
(stdcall).  Put __attribute__((cdecl)) (or CDECL or WINAPIV if you include 
the windef.h from the Cygwin w32api package) in front of your function 
declaration and things should link fine.  If you have questions about these 
calling conventions see the MSDN at msdn.microsoft.com and see the topic 
"calling conventions".  Oh and don't forget to send a big thank you to Bill.

Good luck,

Larry

Original Message:
-----------------
From:  nickolai.bogdatov@verizon.com
Date: Thu, 10 Oct 2002 15:58:57 -0400
To: lhall@rfk.com, cygwin@cygwin.com
Subject: RE: 1.3.12-2 how to link with MS Platform SDK



Thanks, God.
Somebody knows what I'm talking about !

Here is the extract from result of "nm  DhcpCSvc.Lib"
DHCPCSVC.DLL:
00000000 I .idata$4
00000000 I .idata$5
00000000 I .idata$6
00000000 T .text
00000000 T  _DhcpCApiInitialize
                  U __IMPORT_DESCRIPTOR_DHCPCSVC
00000000 I   __imp__DhcpCApiInitialize

What EXACTLY it is giving me ?
Should I create a "DEF" file with all these name but with "_" in front of
the name each function ?
Or should I provide cygwin linker with some options to understand these
kind of format ?

And by the way, here is Makefile:
--------------------------------------------------
CC          = g++
CPPFLAGS    =
DEFS        =
INCS        =
LDFLAGS     =

## Put them all together
INCLUDES    = $(INCS) -I. -I /usr/include/mingw
DEFINES     = $(DEFS)
CFLAGS      = $(INCLUDES) $(DEFINES)
LIBS        = -L. -L/usr/lib/win32api -liphlpapi -ldhcpcsvc

.cpp.o:
      $(CC) $(CFLAGS) -c $<
TARGETS     = srv \

all: $(TARGETS)
clean:
      -rm -f *.o $(TARGETS) *.1
srv:    srv.o
      $(CC) -o $@ srv.o  $(LDFLAGS) $(LIBS)


Regards,
Nickolai Bogdatov




|---------+---------------------------->
|         |           "lhall@pop.ma.ult|
|         |           ranet.com" <lhall|
|         |                            |
|         |           10/10/2002 03:36 |
|         |           PM               |
|         |           Please respond to|
|         |           lhall            |
|         |                            |
|---------+---------------------------->
  >-------------------------------------------------------------------------
-------------------------------------|
  |                                                                        
|
  |       To:       Nickolai G. Bogdatov/EMPL/FL/Verizon@VZNotes,
cygwin@cygwin.com                              |
  |       cc:                                                              
|
  |       Subject:  RE: 1.3.12-2 how to link with MS Platform SDK          
|
  >-------------------------------------------------------------------------
-------------------------------------|




OK, as I thought.  The problem is not the import library
(the .a you created has the same format as the .lib so there's
no benefit to creating the .a).  You need to find out if the
function you're trying to link to is in that library and what
it's name is.  Run 'nm' on the library and grep the results for
your function.  If there's a function in the results that has the
right name but has different stuff appended to the front and/or
back, the include file you're using isn't giving you the right
calling convention (cdecl, stdcall, fastcall).  This is likely
the problem.

Larry

Original Message:
-----------------
From:  nickolai.bogdatov@verizon.com
Date: Thu, 10 Oct 2002 15:08:57 -0400
To: lhall@rfk.com, cygwin@cygwin.com
Subject: RE: 1.3.12-2 how to link with MS Platform SDK



During linking it gives me "enresolved external"

Regards,
Nickolai Bogdatov




--------------------------------------------------------------------
mail2web - Check your email from the web at
http://mail2web.com/ .







--------------------------------------------------------------------
mail2web - Check your email from the web at
http://mail2web.com/ .



--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


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