I am trying to get boost asio to work with my code (which is using 4 byte struct member alignment and _cdecl calling convention). I get the following error when calling asio::async_write:
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
What am I missing? I have read everything on ABI that I can find:
http://www.boost.org/development/separate_compilation.html
I changed boost\config\abi\msvc_prefix.hpp to use #pragma pack(push,4).
I also am using the command line option for bjam:
cxxflags="/Zp4 /Gd"
The Microsoft documentation seems to indicate that the /Zp should override the #pragma if the #pragma is larger or equal:
http://msdn.microsoft.com/en-us/library/ms253935.aspx
http://msdn.microsoft.com/en-us/library/46t77ak2.aspx
Any help would be greatly appreciated,
Brian