> This isn't a problem with cross-compiler linking (or a regression), it's
> simply the result of the fact that we don't yet have the exports/imports
> properly/fully defined for DLL linkage (not yet supported).
>
> The errors are the result of BC_API getting defined to
> __declspec(dllimport). You just need to define BC_STATIC. See define.hpp.
>
> e
>
> On 03/24/2015 01:16 AM, Eric Voskuil wrote:
> > 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
> >>
> >>
> >
>
>