:: Re: [Libbitcoin] Libbitcoin and Qt
Top Page
Delete this message
Reply to this message
Author: Eric Voskuil
Date:  
To: Bedeho Mender
CC: libbitcoin@lists.dyne.org
Subject: Re: [Libbitcoin] Libbitcoin and Qt
Hi Bedeho,

I suspect the errors are the result of a change I made today in master.
I'll look into it.

The define warning pertains to your project. All libbitcoin VS. projects
declare Windows XP SP2 as the build target:

_WIN32_WINNT=0x0600

If you currently have no reason to do otherwise I'd recommend you do the
same in your project.

e

On 03/24/2015 12:01 AM, Bedeho Mender wrote:
> Hi Eric,
>
> Giving the new headers a try.
>
> As before, built libbitcoin with MSVC Nov 2013 CTP, and then I have an
> example Qt project which uses the vanilla MSVC2013.
>
> I get different build errors this time, and fewer of them. As one would
> expect, nothing related to constexpr.
>
> There are basically headers which cause problems, as seen by these errors
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/math/hash_number.hpp(74) :
> error C2375: 'libbitcoin::operator >' : redefinition; different linkage
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/math/hash_number.hpp(57) :
> see declaration of 'libbitcoin::operator >'
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/math/hash_number.hpp(76) :
> error C2375: 'libbitcoin::operator <=' : redefinition; different linkage
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/math/hash_number.hpp(59) :
> see declaration of 'libbitcoin::operator <='
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/math/hash_number.hpp(78) :
> error C2375: 'libbitcoin::operator <<' : redefinition; different linkage
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/math/hash_number.hpp(61) :
> see declaration of 'libbitcoin::operator <<'
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/math/hash_number.hpp(80) :
> error C2375: 'libbitcoin::operator /' : redefinition; different linkage
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/math/hash_number.hpp(63) :
> see declaration of 'libbitcoin::operator /'
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/math/hash_number.hpp(82) :
> error C2375: 'libbitcoin::operator +' : redefinition; different linkage
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/math/hash_number.hpp(65) :
> see declaration of 'libbitcoin::operator +'
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/math/hash_number.hpp(84) :
> error C2375: 'libbitcoin::operator ==' : redefinition; different linkage
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/math/hash_number.hpp(67) :
> see declaration of 'libbitcoin::operator =='
>
> Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. For example:
>
> - add -D_WIN32_WINNT=0x0501 to the compiler command line; or
>
> - add _WIN32_WINNT=0x0501 to your project's Preprocessor Definitions.
>
> Assuming _WIN32_WINNT=0x0501 (i.e. Windows XP target).
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/utility/binary.hpp(79)
> : error C2375: 'libbitcoin::operator ==' : redefinition; different linkage
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/utility/binary.hpp(64)
> : see declaration of 'libbitcoin::operator =='
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/utility/binary.hpp(84)
> : error C2375: 'libbitcoin::operator >>' : redefinition; different linkage
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/utility/binary.hpp(66)
> : see declaration of 'libbitcoin::operator >>'
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/utility/binary.hpp(86)
> : error C2375: 'libbitcoin::operator <<' : redefinition; different linkage
>
> C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/utility/binary.hpp(68)
> : see declaration of 'libbitcoin::operator <<'
>
> This is what I'm working with: https://github.com/bedeho/QtLibbitcoin
>
> best
> Bedeho
>
>
> On 23 March 2015 at 22:07, Eric Voskuil <eric@???
> <mailto:eric@voskuil.org>> wrote:
>
>     Regarding the /Zc:threadSafeInit option, this was added later, in the
>     June "VS14" CTP (now VS2015 in CTP 6), so I'm leaving it as-is.

>
>     e

>
>
>     On 03/23/2015 01:49 PM, Eric Voskuil wrote:
>     > I've updated all libbitcoin repos so that there is no code in
>     published
>     > headers requiring the VC++ CTP compiler (generally C++11 stuff, mostly
>     > constexpr).
>     >
>     > I've done the same in all test projects, which I've also changed
>     to not
>     > use the CTP compiler and instead use VC++12. This provides a
>     convenient
>     > means to ensure that the CTP requirement doesn't creep into the
>     headers
>     > or break in another manner. It also provides an example of how to link
>     > to the main libraries (built with the CTP compiler) using the RTM
>     compiler.

>     >
>     > There is a small additional runtime library that augments the CRT when
>     > linking with VC12. This is automatically incorporated, although I may
>     > try and get rid of that requirement by using " /Zc:threadSafeInit" as
>     > described here:

>     >

>     >
>     http://blogs.msdn.com/b/vcblog/archive/2014/06/03/visual-studio-14-ctp.aspx

>     >
>     > The changes are accomplished using three new libbitcoin macros
>     > (BC_CONSTREXPR, BC_CONSTFUNC and BC_NOEXCEPT) so that non-MSVC builds
>     > are unaffected. These should be used in all published headers and
>     tests.

>     >
>     > e

>     >
>     > On 03/19/2015 02:39 PM, Eric Voskuil wrote:
>     >> It may not be too difficult to remove from headers. Templates may
>     >> present problems beyond the use of constexpr. I'd be happy to
>     review a
>     >> pull request.

>     >>
>     >> e

>     >>
>     >> On 03/19/2015 02:07 PM, Bedeho Mender wrote:
>     >>> Hi Eric,

>     >>>
>     >>> Ive been talking to some Qt developers, and it appears that you do
>     >>> indeed have to rebuild Qt with a newer MSVC version, however, it
>     turns
>     >>> out that this is likely not possible with the present build
>     system on
>     >>> Windows with these new versions of MSVC (for reasons was not given).

>     >>>
>     >>> How difficult would it be to have a version of libbitcoin where
>     the CTP
>     >>> 2013 features were taken out, so that libbitcoin could be used
>     with the
>     >>> latest full release of MSVC 2013? That is, how prevalent is the
>     usage of
>     >>> C++11 features which only are implemented in the CTP? e.g.
>     constexpr.

>     >>>
>     >>> I would be happy to sponsor this dev work depending on how
>     involved it
>     >>> would be, and that would allow people to use libbitcoin with Qt
>     -  which
>     >>> I think a lot of people will likely want to do, given that Qt is the
>     >>> most popular C++ framework out there.

>     >>>
>     >>> best
>     >>>  bedeho

>     >>>

>     >>>

>     >>>
>     >>> On 17 March 2015 at 20:52, Eric Voskuil <eric@???
>     <mailto:eric@voskuil.org>
>     >>> <mailto:eric@voskuil.org <mailto:eric@voskuil.org>>> wrote:

>     >>>
>     >>>     Ah yes, that's unfortunate. Now I remember I looked at QT a
>     while back
>     >>>     and determined I would need to compile QT to make it work. I
>     decided to
>     >>>     wait for time to resolve the issue :/

>     >>>
>     >>>     e

>     >>>
>     >>>     On 03/17/2015 06:27 AM, Bedeho Mender wrote:
>     >>>     > Hi Eric, thanks for the quick response!

>     >>>     >
>     >>>     > It doesn't appear so to me, but perhaps I am
>     misunderstanding the
>     >>>     problem.

>     >>>     >
>     >>>     > When I make a minimal Qt project
>     >>>     > (https://github.com/bedeho/QtLibbitcoin/blob/master/main.cpp)
>     >>>     which uses
>     >>>     > MSVC2013, then if I just
>     >>>     > include the libbitcoin header #include
>     <bitcoin/bitcoin.hpp>, then
>     >>>     I get
>     >>>     > lots of compile errors.

>     >>>     >
>     >>>     > The errors seem to be associated with certain c++11
>     features which
>     >>>     > msvc2013 does
>     >>>     > not support fully. Here is the first error I get

>     >>>     >

>     >>>     >
>     C:\libbitcoin\libbitcoin\include\bitcoin/bitcoin/math/hash.hpp(31) :
>     >>>     > error C2146: syntax error : missing ';' before identifier
>     'size_t'

>     >>>     >
>     >>>     > Which references line 31 in hash.hpp:

>     >>>     >
>     >>>     > constexpr size_t short_hash_size = 20;

>     >>>     >
>     >>>     > In this case, the problem seems to be that constexpr is a
>     new feature
>     >>>     > which msvc2013 does not support, from what I could
>     understand by
>     >>>     > reading up, and that CTP_Nov2013 was required for this
>     reason. For
>     >>>     > example, the release notes on this CTP explicitly mentions
>     constexpr
>     >>>     > support
>     >>>     (http://www.microsoft.com/en-us/download/details.aspx?id=41151):
>     >>>     > "constexpr (except for constructors)"

>     >>>     >
>     >>>     > Am I on the wrong track here? If not, getting Qt to work
>     with CTP
>     >>>     > is necessary to for using Libbitcon with Qt.

>     >>>     >
>     >>>     > bedeho

>     >>>     >

>     >>>     >
>     >>>     > On 16 March 2015 at 22:48, Eric Voskuil <eric@???
>     <mailto:eric@voskuil.org>
>     >>>     <mailto:eric@voskuil.org <mailto:eric@voskuil.org>>
>     >>>     > <mailto:eric@voskuil.org <mailto:eric@voskuil.org>
>     <mailto:eric@voskuil.org <mailto:eric@voskuil.org>>>> wrote:

>     >>>     >
>     >>>     >     You can link to the libbitcoin VC++ libs using the
>     basic v120
>     >>>     >     compiler, they are compatible.

>     >>>     >
>     >>>     >     e

>     >>>     >

>     >>>     >
>     >>>     >     > On Mar 16, 2015, at 8:58 AM, Bedeho Mender
>     >>>     >     <bedeho.mender@???
>     <mailto:bedeho.mender@gmail.com> <mailto:bedeho.mender@gmail.com
>     <mailto:bedeho.mender@gmail.com>>
>     >>>     <mailto:bedeho.mender@gmail.com
>     <mailto:bedeho.mender@gmail.com> <mailto:bedeho.mender@gmail.com
>     <mailto:bedeho.mender@gmail.com>>>>
>     >>>     wrote:

>     >>>     >     >
>     >>>     >     > I have built libbitcoin with msvc using the compiler
>     Microsoft
>     >>>     >     Visual C++ Compiler Nov 2013 CTP.

>     >>>     >     >
>     >>>     >     > I am trying to use libbitcoin with a Qt project
>     running in
>     >>>     >     QtCreator, however it seems this is not easy to do,
>     that is get Qt
>     >>>     >     to get with the CTP.

>     >>>     >     >
>     >>>     >     > Does anyone have any advice on this?

>     >>>     >     >
>     >>>     >     > best
>     >>>     >     >  Bedeho

>     >>>

>     >>>

>     >>

>     >

>
>
>     _______________________________________________
>     Libbitcoin mailing list
>     Libbitcoin@??? <mailto:Libbitcoin@lists.dyne.org>
>     https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/libbitcoin

>
>