Hello All,

I'm sure that this is covered somewhere, however I cannot find it
currently;)

Ok, I try to build a Cygwin application that requires CAPI functions
which are installed with the drivers for an ISDN card, the DLL is named
capi2032.dll, I have an import library which comes from the manufacturer
AVM but this contains symbols not included in the DLL or elsewhere.

In the .lib library are these symbols:

$ nm capi2032.lib | grep ' T '
00000000 T [EMAIL PROTECTED]
00000000 T [EMAIL PROTECTED]
00000000 T [EMAIL PROTECTED]
00000000 T [EMAIL PROTECTED]
00000000 T [EMAIL PROTECTED]
00000000 T [EMAIL PROTECTED]
00000000 T [EMAIL PROTECTED]
00000000 T [EMAIL PROTECTED]
00000000 T [EMAIL PROTECTED]
00000000 T [EMAIL PROTECTED]
00000000 T [EMAIL PROTECTED]
00000000 T [EMAIL PROTECTED]
00000000 T [EMAIL PROTECTED]

in the import library I created are these symbols:

$ nm libcapi2032.dll.a | grep ' T '
00000000 T _TASK_RELEASE
00000000 T _TASK_REGISTER
00000000 T _CAPI_WAIT_FOR_SIGNAL
00000000 T _CAPI_SET_SIGNAL_FOR_16BIT
00000000 T _CAPI_RELEASE
00000000 T _CAPI_REGISTER
00000000 T _CAPI_PUT_MESSAGE
00000000 T _CAPI_MANUFACTURER
00000000 T _CAPI_INSTALLED
00000000 T _CAPI_GET_VERSION
00000000 T _CAPI_GET_SERIAL_NUMBER
00000000 T _CAPI_GET_PROFILE
00000000 T _CAPI_GET_MESSAGE_FOR_16BIT
00000000 T _CAPI_GET_MESSAGE
00000000 T _CAPI_GET_MANUFACTURER

Now linking against my import library gives me this errors:

Creating library file: .libs/libSimpleCapi.dll.a
.libs/capi20.o: In function `CAPI20_ISINSTALLED':
/p/ftproot/pub/asterisk/caiviar-0.3.5/src/capi20.c:68: undefined reference to [EMAIL PROTECTED]'
[...]


Where does the @0 in capi20.o: [EMAIL PROTECTED] came from?

I see in the source:

extern DWORD APIENTRY CAPI_INSTALLED (void);

unsigned CAPI20_ISINSTALLED (void) {
#if defined(CYGWIN) || defined(WIN32)
    return (unsigned)CAPI_INSTALLED () == 0;
#elif defined(LINUX)
    return capi20_isinstalled() == CapiNoError;
#endif


So why does the compiler creats a reference to [EMAIL PROTECTED] or
is it the linker who wants to resolve CAPI_INSTALLED with @0 attached.

Sure, I could edit my .def file and create an import library that contains the symbol names as expected by the linker, however I want
to know why this happens.

Is the docu around which explains it or can somebody who knows what
happens here tell me, please?


Gerrit
--
=^..^=

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply via email to