[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [paho-dev] Building the C++ API/samples
|
Hello Ian,
Yes, several people asked me about this, particularly people stuck with
an older cross-compiler for an embedded system. Including me, as it
turns out! The earliest GCC I suspect that would work is 4.6. For
Windows, DevStudio 2012 is needed (though I still have to do more
testing on Windows to be sure this works properly).
The implementation makes heavy use of the C++11 libraries - threads,
sync objects, time (chrono), and shared pointers. When we discussed this
prior to my submission last spring, everyone seemed OK to proceed along
these lines as we could "look forward" with the C++ implementation,
since people could fall back to the C library if necessary.
I was, however, going to investigate using Boost for older compilers -
so Boost would *not* be needed (at all) for a C++11 compiler, but could
be used for an older compiler. It has nearly drop-in replacements for
threading, time/chrono, and shared pointer libraries. I would still need
to change/remove a few of the new language features (nullptr, noexcept,
etc).
But without using Boost, the required changes/additions would be a lot
of work.
To be clear, we would not need to ship any boost code (no licensing
issues), but anyone with GCC <= 4.5 or VisualStudio <= 2010, could still
use the Paho C++ library with Boost as an external requirement. And
since Boost can be cross-compiled easily enough, this is a viable
solution for embedded cross-compiled targets.
What do you think of that?
Frank
On 11/13/2013 11:27 AM, Ian Craggs wrote:
Hi Frank,
trying to build the C++ samples on my RedHat workstation, I get the
output included below. At least the first one is presumably due to the
older version of gcc installed (4.4.7-3) - I haven't looked at the
rest yet. But the version of gcc installed on at least one of the
Eclipse build servers is older than that (4.3.4).
Should/could we have a solution for pre C++11 compilers?
Ian
g++ -I.. -I../../../org.eclipse.paho.mqtt.c/src -D_NDEBUG -Wall
-std=c++0x -O2 -o async_publish async_publish.cpp -L../lib
-L../../../org.eclipse.paho.mqtt.c/src/linux_ia64 -lmqttpp -lmqttv3a
In file included from ../mqtt/token.h:32,
from ../mqtt/async_client.h:31,
from async_publish.cpp:23:
../mqtt/exception.h:73: error: expected ‘;’ before ‘noexcept’
../mqtt/exception.h:76: error: expected ‘;’ before ‘}’ token
In file included from ../mqtt/async_client.h:31,
from async_publish.cpp:23:
../mqtt/token.h: In member function ‘bool
mqtt::token::wait_until_completion(const
std::chrono::time_point<_Clock, _Duration1>&)’:
../mqtt/token.h:315: error: expected primary-expression before ‘[’ token
In file included from ../mqtt/async_client.h:35,
from async_publish.cpp:23:
../mqtt/connect_options.h: In constructor
‘mqtt::connect_options::connect_options()’:
../mqtt/connect_options.h:63: error: could not convert ‘{{'M', 'Q',
'T', 'C'}, 2, 60, 1, 10, 0l, 0l, 0l, 30, 20, 0l, 0l, 0, 0l}’ to
‘MQTTAsync_connectOptions’
async_publish.cpp: In function ‘void sleep(int)’:
async_publish.cpp:38: error: ‘sleep_for’ is not a member of
‘std::this_thread’
async_publish.cpp: In function ‘int main(int, char**)’:
async_publish.cpp:143: error: ‘nullptr’ was not declared in this scope