Hello,
I am a boost newbie, and this is my first post :-)
I am inserting boost into my application using pre-compiled headers
on Windows.
The pre-compiled header looks like this:
#ifndef
PRECOMPILEDHEADERS_WINRT_SRC_MAIN_INCLUDE_PRE_COMPILED_H_
#define PRECOMPILEDHEADERS_WINRT_SRC_MAIN_INCLUDE_PRE_COMPILED_H_
// Standard integer types
#include <stdint.h>
// Includes for d2d libraries
#include <wrl.h>
#include <d3d11_1.h>
#include <d2d1_1.h>
#include <d2d1effects.h>
#include <d2d1_1helper.h>
#include <dwrite_1.h>
#include <wincodec.h>
#include <math.h>
#include <agile.h>
// Includes for STL types
#include <string>
#include <vector>
#include <set>
#include <map>
#include <memory>
#include <exception>
#include <collection.h>
// Includes for Windows error
#include <winerror.h>
// Includes for Boost libraries
#include "boost/exception/all.hpp"
#include "boost/optional.hpp"
#include "boost/variant.hpp"
#include "boost/exception_ptr.hpp"
#include "boost/date_time/posix_time/posix_time_types.hpp"
#include "boost/archive/text_oarchive.hpp"
#include "boost/archive/text_iarchive.hpp"
#include "boost/serialization/access.hpp"
#include "boost/serialization/vector.hpp"
#include "boost/serialization/string.hpp"
// Includes for devices communications
#include "boost/interprocess/sync/named_mutex.hpp"
#include "boost/interprocess/sync/scoped_lock.hpp"
#include "boost/archive/binary_oarchive.hpp"
#include "boost/archive/binary_iarchive.hpp"
#endif //
PRECOMPILEDHEADERS_WINRT_SRC_MAIN_INCLUDE_PRE_COMPILED_H_
However when I attempt to compile this through maven, using the
maven-nar-plugin, on a Windows 8 machine, I get the following error:
[INFO] ---
maven-nar-plugin:2.25:nar-compile (default-nar-compile) @
precompiledheaders-winrt ---
[INFO] Compiling 1 native files
[INFO] Looking for WinRT dependencies
[ERROR]
C:\Users\marcusma\Source\1edit-prism\precompiledheaders\winrt\external-sources\boost/interprocess/detail/os_file
_functions.hpp(94) : error C2039: 'getenv' : is not a member of
'std'
[ERROR]
C:\Users\marcusma\Source\1edit-prism\precompiledheaders\winrt\external-sources\boost/interprocess/detail/os_file
_functions.hpp(94) : error C3861: 'getenv': identifier not found
This appears to be correct, getenv according to the MSDN
documentation is not available when compiling code for WinRT, using
Visual Studio 12, on a Windows 8 machine.
I understood that boost was supposed to be multi-platform, so why is
std::getenv being used, which is not available for Windows?
Can someone suggest what I need to do to get my pre-compiled headers
to compile.
Cheers,
--
Marcus A.T MacWilliam, Senior Software Engineer. 1Spatial Ltd.
Tel: +44 (0)1223 420414, ext 2289, Mob: +44 (0)7803 706597.
E-Mail: marcus.macwilliam@1spatial.com Skype:marcus.macwilliam
Tennyson House, 7 Cambridge Business Park, Cambridge, CB4 0WZ.
Registered in England No. 4785688, VAT Reg. No. 135539408.
Website: http://www.1spatial.com/ E-mail: info@1spatial.com