Subject: Re: [boost] [winapi] [thread] Conflicting declarations on MinGW
From: AgustÃn K-ballo BergÃ© (kaballo86_at_[hidden])
Date: 2015-12-31 07:47:20
On 12/31/2015 7:59 AM, Andrey Semashev wrote:
> On 2015-12-31 13:40, Antony Polukhin wrote:
>> Some of the Boost.DLL tests produce following warnings:
>> ../boost/thread/win32/thread_primitives.hpp:175:83: warning:
>> declaration of
>> 'void* boost::detail::win32::GetModuleHandleA(const char*)' with C
>> ../boost/detail/winapi/dll.hpp:47:1: warning: conflicts with previous
>> declaration 'HINSTANCE__*
>> ../boost/thread/win32/thread_primitives.hpp:195:94: warning:
>> declaration of
>> 'int (__attribute__((__stdcall__)) *
>> boost::detail::win32::GetProcAddress(void*, const char*))()' with C
>> language linkage
>> ../boost/detail/winapi/dll.hpp:82:1: warning: conflicts with previous
>> declaration 'int (__attribute__((__stdcall__)) *
>> Andrey, Vicente what's the best way to resolve such issues?
> IMO, Boost.Thread needs to be ported to Boost.WinAPI.
> boost/thread/win32/thread_primitives.hpp declares extern "C" functions
> in its own namespace, while Windows SDK and Boost.WinAPI declare them in
> the global namespace.
Declaring extern "C" functions in a namespace is perfectly fine.
Frankly, I'm surprised and disappointed that Boost.WinAPI does not do
it, and that it will litter the global namespace instead.
> This is forbidden by the standard since the
> functions are considered distinct by the language but mangle to the same
The standard is perfectly clear in that both declarations refer to the
same function (7.5 [dcl.link]/6), and there's no potential for ambiguity
since they both denote the same entity.
The warning comes from the use of different arguments and/or return type
in the declarations. I'm guessing Boost.WinAPI is using winapi's typed
handles, while we can see in the warning message that Boost.Thread uses
-- Agustín K-ballo Bergé.- http://talesofcpp.fusionfenix.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk