Response at bottom. (Well, except for this line.)
-----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Steven Watanabe Sent: Friday, June 26, 2009 4:30 PM To: boost-users@lists.boost.org Subject: Re: [Boost-users] Compile errors inside boost::asio code I can't affect.
AMDG
Michael.Broida@thomsonreuters.com wrote:
We've been using Boost 1.38.0: WinXP SP3 on 32-bit box VisualStudio 2005, MSVC++ 8.0, 32-bit builds.
I've just rebuilt Boost 1.38.0 on another system for 64-bit builds: Windows Server 2008 Enterprise SP1 VisualStudio 2008, MSVC++ 9.0, 64-bit builds.
Found no visible build errors during the Boost build.
Since Asio doesn't have a compiled library, it's not very important whether you can build the libraries or not (except for Boost.System on which Asio depends).
Yet when I build our own code on the 64-bit system, I get these three compile errors deep inside boost::asio code that I have no control over:
error C2664: 'QueueUserAPC' : cannot convert parameter 1 from 'void (__cdecl *)(ULONG)' to 'PAPCFUNC'
D:\dev\3rdParty_x64\include\boost\asio\detail\win_thread.hpp 151
<snip>
Party_x64\include\boost\asio\detail\win_iocp_io_service.hpp 430
The "D:\dev\3rdParty_x64" is where I've installed the
includes & libs
for Boost and other components.
As you can see, those errors are not in our code; they're deep in the ASIO code itself, and I don't see how we could be causing them. I didn't write our code that uses ASIO, so I don't know anything about what ASIO is trying to do there. :(
Since I couldn't find any other complaints online about this, I'm flailing around for support.
Any pointers would be appreciated.
Pertinent data: 64-bit WindowsServer2008 SP1 on Intel 64-bit box VisualStudio2008 SP1 (SP2 is still RC, I think, so we can't use it.) Our projects using "x64" configuration, so uses x64 compiler. Boost built with x64 compiler via: toolset=msvc-9.0 address-model=64
Can you run Asio's tests? The command is bjam <options> libs/asio/test
Done. I'm not sure what to look for in the test output. Is there a
good string indicating "failed" that I can search for? ("fail" doesn't
appear anywhere.)
I ran that with the same options I used to build Boost. I specify
build-dir, stagedir, libdir, includedir, but most may be unnecessary for
this test. Then I use:
--layout=versioned (hmm, is that supposed to start "--"?)
toolset=msvc-9.0
address-model=64
link=static
threading=multi
runtime-link=static
define=_SCL_SECURE_NO_DEPRECATE
define=_CRT_SECURE_NO_DEPRECATE
define=_CRT_NONSTDC_NO_DEPRECATE
I don't -see- any failures or errors. There are some warnings, though:
a) "decorated name length exceeded" (OK, I think)
b) "conversion from 'size_t' to 'DWORD'" (didn't expect those)
c) "calling _set_se_translator() requires /EHa (how to specify /EHa to
bjam??)
d) "conversion from 'SOCKET' to 'int' (goes away in re-run below!!)
e) "'boost::asio::basic_socket