Hey Stackoverflow社区, 现在我有以下问题:我想用mac osx.10.11编译c ++。但每次我想制作代码时它都会给我一个错误代码。我已经用Google搜索了,但我一无所获。
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。
我希望你能帮助我。 谢谢!
答案 0 :(得分:1)
您应该专注于第一个编译器错误:
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);