问题
I have compiled the boost binaries correctly and followed all of the instructions, but I am getting a lot of errors, and I don't know why!
Here is my 'include' setup:
This is the code I used to test boost:
#include <boost/asio.hpp> // include boost
#include <iostream>
using namespace std;
using namespace boost::asio; // save tons of typing
// These are the values our port needs to connect
#ifdef _WIN32
// windows uses com ports, this depends on what com port your cable is plugged in to.
const char *PORT = "COM4";
#else
// *nix com ports
const char *PORT = "dev/ttyS3";
#endif
// Note: all the following except BAUD are the exact same as the default values
// what baud rate do we communicate at
serial_port_base::baud_rate BAUD(9600);
// how big is each "packet" of data (default is 8 bits)
serial_port_base::character_size CSIZE(8);
// what flow control is used (default is none)
serial_port_base::flow_control FLOW(serial_port_base::flow_control::none);
// what parity is used (default is none)
serial_port_base::parity PARITY(serial_port_base::parity::none);
// how many stop bits are used (default is one)
serial_port_base::stop_bits STOP(serial_port_base::stop_bits::one);
int main()
{
// create the I/O service that talks to the serial device
io_service io;
// create the serial device, note it takes the io service and the port name
serial_port port(io, PORT);
// go through and set all the options as we need them
// all of them are listed, but the default values work for most cases
port.set_option(BAUD);
port.set_option(CSIZE);
port.set_option(FLOW);
port.set_option(PARITY);
port.set_option(STOP);
// buffer to store commands
// this device reads 8 bits, meaning an unsigned char, as instructions
// varies with the device, check the manual first
unsigned char command[1] = { 0 };
// read in user value to be sent to device
int input;
cin >> input;
// Simple loop, since the only good values are [0,255]
// break when a negative number is entered.
// The cast will convert too big numbers into range.
while (input >= 0)
{
// convert our read in number into the target data type
command[0] = static_cast<unsigned char>(input);
// this is the command that sends the actual bits over the wire
// note it takes a stream and a asio::buffer
// the stream is our serial_port
// the buffer is constructed using our command buffer and
// the number of instructions to send
write(port, buffer(command, 1));
// read in the next input value
cin >> input;
}
// all done sending commands
return 0;
}
My errors (I can't give any info because I don't know what the mean or what causes them):
1 IntelliSense: identifier "WSA13" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 70 19 Test3
2 IntelliSense: identifier "WSA102" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 73 34 Test3
3 IntelliSense: identifier "WSA100" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 76 20 Test3
4 IntelliSense: identifier "WSA113" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 79 23 Test3
5 IntelliSense: identifier "WSA103" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 82 21 Test3
6 IntelliSense: identifier "WSA106" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 90 24 Test3
7 IntelliSense: identifier "WSA107" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 93 24 Test3
8 IntelliSense: identifier "WSA108" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 96 22 Test3
9 IntelliSense: identifier "WSA9" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 99 20 Test3
10 IntelliSense: identifier "WSA14" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 102 11 Test3
11 IntelliSense: identifier "WSA110" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 105 22 Test3
12 IntelliSense: identifier "WSA112" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 108 17 Test3
13 IntelliSense: identifier "WSA4" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 111 17 Test3
14 IntelliSense: identifier "WSA22" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 114 22 Test3
15 IntelliSense: identifier "WSA115" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 117 18 Test3
16 IntelliSense: identifier "WSA38" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 120 19 Test3
17 IntelliSense: identifier "WSA116" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 123 18 Test3
18 IntelliSense: identifier "WSA117" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 126 19 Test3
19 IntelliSense: identifier "WSA118" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 129 25 Test3
20 IntelliSense: identifier "WSA24" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 132 20 Test3
21 IntelliSense: identifier "WSA119" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 135 21 Test3
22 IntelliSense: identifier "WSA123" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 148 24 Test3
23 IntelliSense: identifier "WSA126" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 151 19 Test3
24 IntelliSense: identifier "WSA128" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 154 16 Test3
25 IntelliSense: identifier "WSA130" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 162 29 Test3
26 IntelliSense: identifier "WSA138" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 168 15 Test3
27 IntelliSense: identifier "WSA140" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 176 17 Test3
28 IntelliSense: identifier "WSA11001L" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 182 20 Test3
29 IntelliSense: identifier "WSA11002L" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 185 30 Test3
30 IntelliSense: identifier "WSA11004L" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 188 13 Test3
31 IntelliSense: identifier "WSA11003L" is undefined c:\libs\boost\boost_1_55_0\boost\asio\error.hpp 191 17 Test3
32 IntelliSense: identifier "BOOST_ASIO_OS_DEF_0x00000002" is undefined c:\libs\boost\boost_1_55_0\boost\asio\ip\resolver_query_base.hpp 66 22 Test3
33 IntelliSense: identifier "BOOST_ASIO_OS_DEF_0x00000001" is undefined c:\libs\boost\boost_1_55_0\boost\asio\ip\resolver_query_base.hpp 67 15 Test3
34 IntelliSense: identifier "BOOST_ASIO_OS_DEF_0x00000004" is undefined c:\libs\boost\boost_1_55_0\boost\asio\ip\resolver_query_base.hpp 68 20 Test3
35 IntelliSense: identifier "BOOST_ASIO_OS_DEF_0x00000008" is undefined c:\libs\boost\boost_1_55_0\boost\asio\ip\resolver_query_base.hpp 69 23 Test3
36 IntelliSense: identifier "BOOST_ASIO_OS_DEF_0x00000800" is undefined c:\libs\boost\boost_1_55_0\boost\asio\ip\resolver_query_base.hpp 70 17 Test3
37 IntelliSense: identifier "BOOST_ASIO_OS_DEF_0x00000100" is undefined c:\libs\boost\boost_1_55_0\boost\asio\ip\resolver_query_base.hpp 71 20 Test3
38 IntelliSense: identifier "BOOST_ASIO_OS_DEF_0x00000400" is undefined c:\libs\boost\boost_1_55_0\boost\asio\ip\resolver_query_base.hpp 72 26 Test3
39 IntelliSense: identifier "BOOST_ASIO_OS_DEF_0" is undefined c:\libs\boost\boost_1_55_0\boost\asio\ip\multicast.hpp 51 3 Test3
40 IntelliSense: identifier "BOOST_ASIO_OS_DEF_12" is undefined c:\libs\boost\boost_1_55_0\boost\asio\ip\multicast.hpp 52 3 Test3
41 IntelliSense: identifier "BOOST_ASIO_OS_DEF_13" is undefined c:\libs\boost\boost_1_55_0\boost\asio\ip\multicast.hpp 80 3 Test3
42 IntelliSense: identifier "BOOST_ASIO_OS_DEF_9" is undefined c:\libs\boost\boost_1_55_0\boost\asio\ip\multicast.hpp 108 3 Test3
43 IntelliSense: identifier "BOOST_ASIO_OS_DEF_10" is undefined c:\libs\boost\boost_1_55_0\boost\asio\ip\multicast.hpp 144 3 Test3
44 IntelliSense: identifier "BOOST_ASIO_OS_DEF_11" is undefined c:\libs\boost\boost_1_55_0\boost\asio\ip\multicast.hpp 181 3 Test3
45 IntelliSense: identifier "BOOST_ASIO_OS_DEF_0x0001" is undefined c:\libs\boost\boost_1_55_0\boost\asio\ip\tcp.hpp 126 37 Test3
46 IntelliSense: identifier "BOOST_ASIO_OS_DEF_0" is undefined c:\libs\boost\boost_1_55_0\boost\asio\ip\unicast.hpp 59 3 Test3
47 IntelliSense: identifier "BOOST_ASIO_OS_DEF_4" is undefined c:\libs\boost\boost_1_55_0\boost\asio\ip\unicast.hpp 60 3 Test3
回答1:
From the Boost 1.55 release notes:
Known Bugs with Visual Studio 2013/Visual C++ 12
Visual Studio 2013 was released quite late in the release process, so there exist several unresolved issues. These include:
- Serialization can't compile because of a missing include.
- Using has_member_function_callable_with from Boost.Container's allocator_traits causes a compile error (#9332).
- In libraries such as Unordered and MultiIndex, calling overloaded functions with initializer lists can result in a compile error, with Visual C++ claiming that the overloads are ambiguous. This is a Visual C++ bug and it isn't clear if there's a good workaround. This won't affect code that doesn't use initializer lists, or uses an initializer list that doesn't require an implicit conversion (i.e. an initializer list of the container's exact value type).
- Thread: ex_scoped_thread compile fails (#9333).
Note that VC++ 12 isn't fully supported, and even if Boost does compile doesn't necessarily mean that it won't have runtime bugs (which means, sadly, you'll have to make work-arounds for them). If you ever find more bugs in Boost, be sure to report it to them.
回答2:
Just ran into this myself when upgrading to VC++ 2013. FYI, they aren't build errors, they are IntelliSense errors. It seems that IntelliSense isn't as smart as the compiler is in resolving some macros. I'm not too worried about it given how great the new VC++ 2013 IntelliSense is compared to 2010.
In any case you can suppress them by right clicking on the list and unticking "Show IntelliSense Errors"
来源:https://stackoverflow.com/questions/20534622/boost-1-55-doesnt-work-with-visual-studio-2013