-4

嘿 Stackoverflow 社区,现在我有以下问题:我想用 mac osx.10.11 编译 c++。但是每次我想编写代码时,它都会给我一个错误代码。我已经用谷歌搜索了,但我什么也没找到。

hashGenesisBlock = uint256("0x01");
if (true && genesis.GetHash() != hashGenesisBlock)
        {
            Logprintf("recalculating params for mainnet.\n");
            Logprintf("old mainnet genesis nonce: %s\n", genesis.nNonce.ToString().c_str());
            Logprintf("old mainnet genesis hash:  %s\n", hashGenesisBlock.ToString().c_str());
            // deliberately empty for loop finds nonce value.
            for(genesis.nNonce == 0; genesis.GetHash() > bnProofOfWorkLimit; genesis.nNonce++){ } 
            Logprintf("new mainnet genesis merkle root: %s\n", genesis.hashMerkleRoot.ToString().c_str());
            Logprintf("new mainnet genesis nonce: %s\n", genesis.nNonce.ToString().c_str());
            Logprintf("new mainnet genesis hash: %s\n", genesis.GetHash().ToString().c_str());
        }

错误信息:

Making all in src
  CXX      libgamebit_common_a-chainparams.o
chainparams.cpp:143:13: error: use of undeclared identifier 'Logprintf'
            Logprintf("recalculating params for mainnet.\n");
            ^
chainparams.cpp:144:72: error: member reference base type 'uint32_t'
      (aka 'unsigned int') is not a structure or union
  ...Logprintf("old mainnet genesis nonce: %s\n", genesis.nNonce.ToString().c...

你有什么想法为什么我会得到这种错误?实际上我正在尝试编译bitcoind。

我希望你能帮助我。谢谢!

4

1 回答 1

2

您应该专注于第一个编译器错误:

error: use of undeclared identifier 'Logprintf'

也就是说,您正在使用这个标识符Logprintf,可能是一个函数,但它没有定义。很可能,您缺少#include定义它的一个。

下一个错误:

error: member reference base type 'uint32_t'

如果你看一下第 144 行,第 72 列,就是这个:

Logprintf("old mainnet genesis nonce: %s\n", genesis.nNonce.ToString()
                                                           ^
                                                  column 72|

所以你nNonce的类型是uint32_t你试图调用ToString()它的成员函数。但是 C++ 中的基本类型没有成员函数,只有结构(即类)和联合有。

我怀疑您正在尝试使用纯 C++ 编译器编译一些 C++/CLI 代码。恐怕需要一些翻译。

最后一个错误,一旦你有正确的定义,你可以Logprintf通过编写:

Logprintf("old mainnet genesis nonce: %u\n", (unsigned)genesis.nNonce);
于 2017-06-05T16:49:07.260 回答