You are viewing a single comment's thread from:

RE: 64 bits Window binary compiled with VS 2013

in #steemit8 years ago (edited)

I am not a c++ programmer either.
I look at @bitcube's original source and modified accordingly.
On node cpp line 4221

changeg from: FC_CAPTURE_AND_LOG (())
         to:  FC_CAPTURE_AND_RETHROW() 

after that you will encounter few more issues, and more code modification before its able to compile.

Sort:  

Looks like that change is made by me, which is to address a node stuck issue. I'm not sure why it doesn't compile on vs though. Perhaps just need to add a whatever variable to the inner (()), for example make it FC_CAPTURE_AND_LOG( (_user_agent_string) ). Need testing.

//Update: after made above change, at least the project still compiles in Ubuntu. I have no VS env, so need your help to test out.

I will test it when I can.

Hi @abit,
I did a test with above code FC_CAPTURE_AND_LOG( (_user_agent_string) ), it compiled fine with VS2013. But after it fully syncs, it crashed, not sure why.
I would like to ask you a different question.
when I was compiling cli_wallet, I goterror C2593: 'operator <' is ambiguous
which is caused by found using ADL on ip.hpp(60). F:\winsteem\steem\libraries\fc\include\fc/network/ip.hpp(60): could be 'bool fc::ip::operator <(const fc::ip::endpoint &,const fc::ip::endpoint &)' [found using argument-dependent lookup] while trying to match the argument list '(const fc::ip::address, const fc::ip::address)'.
I try to overload the operator by adding a line friend bool operator<(const address& a, const address& b);,
it gives me different error LNK2019 & 2020 unresolved externals. So I end up omitting line 60 from the ip.hpp file. then it compiles without issues.
The question for you is what is the best remedy for this error?

I'm replying here due to reached maximum nested level. Sorry for the late reply.

after it fully syncs, it crashed, not sure why.

Crash every time after fully synced? Logs and/or core dump etc would be useful.

when I was compiling cli_wallet, I got error C2593: 'operator <' is ambiguous
which is caused by found using ADL on ip.hpp(60).

It seems that in the cli_wallet code somewhere there is a comparison between two address objects, but class address lack of a operator <. Try

  • add a line friend bool operator<(const address& a, const address& b); to class address, and
  • add an implementation to ip.cpp?
  bool operator<( const address& a, const address& b ) {
    return uint32_t(a) < uint32_t(b);
  }

Update2:
Thank you @abit. All the below code change compiled without error.

FC_CAPTURE_AND_LOG( (_user_agent_string) )

  • add a line friend bool operator<(const address& a, const address& b); >to class address
  • add an implementation to ip.cpp?
    bool operator<( const address& a, const address& b ) { return uint32_t(a) < uint32_t(b); }

Except the latest commit. It has 7 error:
4 reference to raw.hpp line 294:
c2668: fc::raw::unpack : ambiguous call to overload function
and 3 reference to variant.hpp line53:
c2668 fc::from_variant : abmiguous call to overload funciotn

I don't think it is related to the code change.

"raw.hpp line 294" and "variant.hpp line53" don't contain code in my repository. Would you please share us the whole error message, or just post in an new issue to your own github repository and post the link here? Thanks

Ok. I will try that later.