所以我希望使用示例代码编译这个项目https://github.com/MMquant/bfx-cpp-api。我已经包含了读给我建议的cryptopp文件。可在此处找到:https://github.com/weidai11/cryptopp。
我正在使用Ubutnu版本17.10和GNU编译器。
以下是我编译的方式:
g++ example.cpp BitfinexAPI.cpp BitfinexAPI.hpp -Icryptopp -I. -o a -w -std=c++17
BitFinex支持破解代码似乎很奇怪,所以我很确定这个问题必须是我正在做的事情。
我得到的错误与第936行有关,其中未声明数据类型“byte”。我的预测是我错过了某个地方的头文件,但任何帮助都会受到赞赏。
$ g++ example.cpp BitfinexAPI.cpp BitfinexAPI.hpp -Icryptopp -I. -o a -w -std=c++17
BitfinexAPI.cpp: In static member function ‘static int BitfinexAPI::getBase64(const string&, std::__cxx11::string&)’:
BitfinexAPI.cpp:936:5: error: ‘byte’ was not declared in this scope
byte buffer[1024] = {};
^~~~
BitfinexAPI.cpp:936:5: note: suggested alternative:
In file included from ../cryptopp/seckey.h:9:0,
from ../cryptopp/hmac.h:9,
from BitfinexAPI.cpp:37:
../cryptopp/config.h:222:23: note: ‘CryptoPP::byte’
typedef unsigned char byte;
^~~~
BitfinexAPI.cpp:940:9: error: ‘buffer’ was not declared in this scope
buffer[i] = content[i];
^~~~~~
BitfinexAPI.cpp:940:9: note: suggested alternative: ‘setbuffer’
buffer[i] = content[i];
^~~~~~
setbuffer
BitfinexAPI.cpp:943:21: error: ‘buffer’ was not declared in this scope
StringSource ss(buffer, content.length(), true, new Base64Encoder( new StringSink(encoded), false));
^~~~~~
BitfinexAPI.cpp:943:21: note: suggested alternative: ‘setbuffer’
StringSource ss(buffer, content.length(), true, new Base64Encoder( new StringSink(encoded), false));
^~~~~~
setbuffer
BitfinexAPI.cpp: In static member function ‘static int BitfinexAPI::getHmacSha384(const string&, const string&, std::__cxx11::string&)’:
BitfinexAPI.cpp:963:33: error: ISO C++ forbids declaration of ‘type name’ with no type [-fpermissive]
SecByteBlock byteKey((const byte*)key.data(), key.size());
^~~~
BitfinexAPI.cpp:963:27: error: expected primary-expression before ‘const’
SecByteBlock byteKey((const byte*)key.data(), key.size());
^~~~~
BitfinexAPI.cpp:963:27: error: expected ‘)’ before ‘const’
答案 0 :(得分:2)
有点棘手,但我(想想?)发现了它。 byte
代码在cryptopp
代码中定义:
https://github.com/weidai11/cryptopp/blob/master/config.h
第222行。所以我猜你的系统上的config.h
是不存在的,可能是因为你没有正确安装标头。一个常见的问题是拥有库
sudo apt-get install libcrypto++
但遗漏了开发者文件(特别是标题)
sudo apt-get install libcrypto++-dev
我不是100%关于软件包名称(Debian用户),但应尽量接近。
来自JTejedor的好消息:
似乎加密人员在他们的定义周围放置了一个名称空间,以免与std::byte
发生冲突。您可能希望在bfx(第936行)中的字节定义中添加CryptoPP::
,如果这样可以为那些人打开一个错误(或请求拉动)。