Hi!

I'm using the recent rubenvb-gcc-4.7.1 release and tried to compile an 
application using TAPI, however tapi.h cannot be 
compiled:

> c:\mingw32\bin\../lib/gcc/i686-w64-mingw32/4.7.1/../../../../i686-w64-mingw32/include/tapi.h:2074:107:
>  error: declaration of C function 'LONG lineAddProviderW(LPCWSTR, HWND, 
> LPDWORD)' conflicts with
> c:\mingw32\bin\../lib/gcc/i686-w64-mingw32/4.7.1/../../../../i686-w64-mingw32/include/tapi.h:2072:1:
>  error: previous declaration 'LONG lineAddProviderW(LPCSTR, HWND, LPDWORD)' 
> here

This is because the whole list of

> #define yadayada __MINGW_NAME_AW(yadayada)

is located *before* the function declarations and the expansion of the 
__MINGW_NAME_AW macro leads to name clashes.

This can be fixed by moving the macro block *after* the function declarations 
(see patch below).

However, this problem solved just ends up with linker errors since it seems 
that many functions declared are not in the 
import lib libtapi32.a:

C:\Code\tapiLine.cpp:24: undefined reference to `lineInitializeExW@28'
C:\Code\tapiLine.cpp:38: undefined reference to `lineGetDevCapsW@20'

The program must be compiled with -D_UNICODE -DUNICODE.

I'm now going to use the "LoadLibrary"-way and resolve the symbols dynamically, 
but wanted to have this issue reported.

If i can help in some way, let me know.

Regards,
  Peter

----- PATCH ----8<-----8<------8<-------SNIP------

*** tapi_1.h    Fri Jun 15 17:45:13 2012
--- tapi_2.h    Tue Jul 10 23:54:26 2012
***************
*** 2007,2072 ****
       DWORD dwStringOffset;
     } VARSTRING,*LPVARSTRING;

- #define lineAddProvider __MINGW_NAME_AW(lineAddProvider)
- #define lineBlindTransfer __MINGW_NAME_AW(lineBlindTransfer)
- #define lineConfigDialog __MINGW_NAME_AW(lineConfigDialog)
- #define lineConfigDialogEdit __MINGW_NAME_AW(lineConfigDialogEdit)
- #define lineCreateAgent __MINGW_NAME_AW(lineCreateAgent)
- #define lineCreateAgent __MINGW_NAME_AW(lineCreateAgent)
- #define lineDial __MINGW_NAME_AW(lineDial)
- #define lineForward __MINGW_NAME_AW(lineForward)
- #define lineGatherDigits __MINGW_NAME_AW(lineGatherDigits)
- #define lineGenerateDigits __MINGW_NAME_AW(lineGenerateDigits)
- #define lineGetAddressCaps __MINGW_NAME_AW(lineGetAddressCaps)
- #define lineGetAddressID __MINGW_NAME_AW(lineGetAddressID)
- #define lineGetAddressStatus __MINGW_NAME_AW(lineGetAddressStatus)
- #define lineGetAgentActivityList __MINGW_NAME_AW(lineGetAgentActivityList)
- #define lineGetAgentCaps __MINGW_NAME_AW(lineGetAgentCaps)
- #define lineGetAgentGroupList __MINGW_NAME_AW(lineGetAgentGroupList)
- #define lineGetAgentStatus __MINGW_NAME_AW(lineGetAgentStatus)
- #define lineGetAppPriority __MINGW_NAME_AW(lineGetAppPriority)
- #define lineGetCallInfo __MINGW_NAME_AW(lineGetCallInfo)
- #define lineGetCountry __MINGW_NAME_AW(lineGetCountry)
- #define lineGetDevCaps __MINGW_NAME_AW(lineGetDevCaps)
- #define lineGetDevConfig __MINGW_NAME_AW(lineGetDevConfig)
- #define lineGetGroupList __MINGW_NAME_AW(lineGetGroupList)
- #define lineGetIcon __MINGW_NAME_AW(lineGetIcon)
- #define lineGetID __MINGW_NAME_AW(lineGetID)
- #define lineGetDevStatus __MINGW_NAME_AW(lineGetDevStatus)
- #define lineGetProviderList __MINGW_NAME_AW(lineGetProviderList)
- #define lineGetQueueList __MINGW_NAME_AW(lineGetQueueList)
- #define lineGetRequest __MINGW_NAME_AW(lineGetRequest)
- #define lineGetTranslateCaps __MINGW_NAME_AW(lineGetTranslateCaps)
- #define lineHandoff __MINGW_NAME_AW(lineHandoff)
- #define lineInitializeEx __MINGW_NAME_AW(lineInitializeEx)
- #define lineMakeCall __MINGW_NAME_AW(lineMakeCall)
- #define lineOpen __MINGW_NAME_AW(lineOpen)
- #define linePark __MINGW_NAME_AW(linePark)
- #define linePickup __MINGW_NAME_AW(linePickup)
- #define linePrepareAddToConference __MINGW_NAME_AW(linePrepareAddToConference)
- #define lineRedirect __MINGW_NAME_AW(lineRedirect)
- #define lineSetAppPriority __MINGW_NAME_AW(lineSetAppPriority)
- #define lineSetDevConfig __MINGW_NAME_AW(lineSetDevConfig)
- #define lineSetTollList __MINGW_NAME_AW(lineSetTollList)
- #define lineSetupConference __MINGW_NAME_AW(lineSetupConference)
- #define lineSetupTransfer __MINGW_NAME_AW(lineSetupTransfer)
- #define lineTranslateAddress __MINGW_NAME_AW(lineTranslateAddress)
- #define lineTranslateDialog __MINGW_NAME_AW(lineTranslateDialog)
- #define lineUnpark __MINGW_NAME_AW(lineUnpark)
-
- #define phoneConfigDialog __MINGW_NAME_AW(phoneConfigDialog)
- #define phoneGetButtonInfo __MINGW_NAME_AW(phoneGetButtonInfo)
- #define phoneGetDevCaps __MINGW_NAME_AW(phoneGetDevCaps)
- #define phoneGetIcon __MINGW_NAME_AW(phoneGetIcon)
- #define phoneGetID __MINGW_NAME_AW(phoneGetID)
- #define phoneGetStatus __MINGW_NAME_AW(phoneGetStatus)
- #define phoneInitializeEx __MINGW_NAME_AW(phoneInitializeEx)
- #define phoneSetButtonInfo __MINGW_NAME_AW(phoneSetButtonInfo)
-
- #define tapiGetLocationInfo __MINGW_NAME_AW(tapiGetLocationInfo)
- #define tapiRequestMakeCall __MINGW_NAME_AW(tapiRequestMakeCall)
- #define tapiRequestMediaCall __MINGW_NAME_AW(tapiRequestMediaCall)
-
     LONG WINAPI lineAccept(HCALL hCall,LPCSTR lpsUserUserInfo,DWORD dwSize);
     LONG WINAPI lineAddProvider(LPCSTR lpszProviderFilename,HWND 
hwndOwner,LPDWORD lpdwPermanentProviderID);
     LONG WINAPI lineAddProviderA(LPCSTR lpszProviderFilename,HWND 
hwndOwner,LPDWORD lpdwPermanentProviderID);
--- 2007,2012 ----
***************
*** 2316,2321 ****
--- 2256,2322 ----
     LONG WINAPI tapiRequestMediaCall(HWND hwnd,WPARAM wRequestID,LPCSTR 
lpszDeviceClass,LPCSTR lpDeviceID,DWORD 
dwSize,DWORD dwSecure,LPCSTR

lpszDestAddress,LPCSTR lpszAppName,LPCSTR lpszCalledParty,LPCSTR lpszComment);
     LONG WINAPI tapiRequestMediaCallA(HWND hwnd,WPARAM wRequestID,LPCSTR 
lpszDeviceClass,LPCSTR lpDeviceID,DWORD 
dwSize,DWORD dwSecure,LPCSTR

lpszDestAddress,LPCSTR lpszAppName,LPCSTR lpszCalledParty,LPCSTR lpszComment);
     LONG WINAPI tapiRequestMediaCallW(HWND hwnd,WPARAM wRequestID,LPCWSTR 
lpszDeviceClass,LPCWSTR lpDeviceID,DWORD 
dwSize,DWORD

dwSecure,LPCWSTR lpszDestAddress,LPCWSTR lpszAppName,LPCWSTR 
lpszCalledParty,LPCWSTR lpszComment);
+
+
+ #define lineAddProvider __MINGW_NAME_AW(lineAddProvider)
+ #define lineBlindTransfer __MINGW_NAME_AW(lineBlindTransfer)
+ #define lineConfigDialog __MINGW_NAME_AW(lineConfigDialog)
+ #define lineConfigDialogEdit __MINGW_NAME_AW(lineConfigDialogEdit)
+ #define lineCreateAgent __MINGW_NAME_AW(lineCreateAgent)
+ #define lineCreateAgent __MINGW_NAME_AW(lineCreateAgent)
+ #define lineDial __MINGW_NAME_AW(lineDial)
+ #define lineForward __MINGW_NAME_AW(lineForward)
+ #define lineGatherDigits __MINGW_NAME_AW(lineGatherDigits)
+ #define lineGenerateDigits __MINGW_NAME_AW(lineGenerateDigits)
+ #define lineGetAddressCaps __MINGW_NAME_AW(lineGetAddressCaps)
+ #define lineGetAddressID __MINGW_NAME_AW(lineGetAddressID)
+ #define lineGetAddressStatus __MINGW_NAME_AW(lineGetAddressStatus)
+ #define lineGetAgentActivityList __MINGW_NAME_AW(lineGetAgentActivityList)
+ #define lineGetAgentCaps __MINGW_NAME_AW(lineGetAgentCaps)
+ #define lineGetAgentGroupList __MINGW_NAME_AW(lineGetAgentGroupList)
+ #define lineGetAgentStatus __MINGW_NAME_AW(lineGetAgentStatus)
+ #define lineGetAppPriority __MINGW_NAME_AW(lineGetAppPriority)
+ #define lineGetCallInfo __MINGW_NAME_AW(lineGetCallInfo)
+ #define lineGetCountry __MINGW_NAME_AW(lineGetCountry)
+ #define lineGetDevCaps __MINGW_NAME_AW(lineGetDevCaps)
+ #define lineGetDevConfig __MINGW_NAME_AW(lineGetDevConfig)
+ #define lineGetGroupList __MINGW_NAME_AW(lineGetGroupList)
+ #define lineGetIcon __MINGW_NAME_AW(lineGetIcon)
+ #define lineGetID __MINGW_NAME_AW(lineGetID)
+ #define lineGetDevStatus __MINGW_NAME_AW(lineGetDevStatus)
+ #define lineGetProviderList __MINGW_NAME_AW(lineGetProviderList)
+ #define lineGetQueueList __MINGW_NAME_AW(lineGetQueueList)
+ #define lineGetRequest __MINGW_NAME_AW(lineGetRequest)
+ #define lineGetTranslateCaps __MINGW_NAME_AW(lineGetTranslateCaps)
+ #define lineHandoff __MINGW_NAME_AW(lineHandoff)
+ #define lineInitializeEx __MINGW_NAME_AW(lineInitializeEx)
+ #define lineMakeCall __MINGW_NAME_AW(lineMakeCall)
+ #define lineOpen __MINGW_NAME_AW(lineOpen)
+ #define linePark __MINGW_NAME_AW(linePark)
+ #define linePickup __MINGW_NAME_AW(linePickup)
+ #define linePrepareAddToConference __MINGW_NAME_AW(linePrepareAddToConference)
+ #define lineRedirect __MINGW_NAME_AW(lineRedirect)
+ #define lineSetAppPriority __MINGW_NAME_AW(lineSetAppPriority)
+ #define lineSetDevConfig __MINGW_NAME_AW(lineSetDevConfig)
+ #define lineSetTollList __MINGW_NAME_AW(lineSetTollList)
+ #define lineSetupConference __MINGW_NAME_AW(lineSetupConference)
+ #define lineSetupTransfer __MINGW_NAME_AW(lineSetupTransfer)
+ #define lineTranslateAddress __MINGW_NAME_AW(lineTranslateAddress)
+ #define lineTranslateDialog __MINGW_NAME_AW(lineTranslateDialog)
+ #define lineUnpark __MINGW_NAME_AW(lineUnpark)
+
+ #define phoneConfigDialog __MINGW_NAME_AW(phoneConfigDialog)
+ #define phoneGetButtonInfo __MINGW_NAME_AW(phoneGetButtonInfo)
+ #define phoneGetDevCaps __MINGW_NAME_AW(phoneGetDevCaps)
+ #define phoneGetIcon __MINGW_NAME_AW(phoneGetIcon)
+ #define phoneGetID __MINGW_NAME_AW(phoneGetID)
+ #define phoneGetStatus __MINGW_NAME_AW(phoneGetStatus)
+ #define phoneInitializeEx __MINGW_NAME_AW(phoneInitializeEx)
+ #define phoneSetButtonInfo __MINGW_NAME_AW(phoneSetButtonInfo)
+
+ #define tapiGetLocationInfo __MINGW_NAME_AW(tapiGetLocationInfo)
+ #define tapiRequestMakeCall __MINGW_NAME_AW(tapiRequestMakeCall)
+ #define tapiRequestMediaCall __MINGW_NAME_AW(tapiRequestMediaCall)

   #define TAPIERROR_FORMATMESSAGE(__ErrCode__) (((__ErrCode__) > 0xFFFF0000) ? 
((__ErrCode__) & 0x0000FFFF) : 
(((__ErrCode__) & 0x10000000) ?

((__ErrCode__) - 0x90000000 + 0xF000) : ((__ErrCode__) - 0x80000000 + 0xE000)))


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to