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