Tweetnacl的头文件和源文件(如提供的here)不匹配,标头中声明的extern
函数实际上并未在源文件中定义。我认为标题中的许多#define
是理解这一点的关键,尽管我不确定如何。它使用什么样的奇怪格式?我错过了什么?
虽然可能是一个单独的问题,但源文件在链接时也找不到randombytes
,这个函数在哪里被定义?
示例:
在tweetnacl.h
:
#define crypto_hash_sha256_tweet_BYTES 32
extern int crypto_hash_sha256_tweet(unsigned char *,const unsigned char *,unsigned long long);
#define crypto_hash_sha256_tweet_VERSION "-"
#define crypto_hash_sha256 crypto_hash_sha256_tweet
#define crypto_hash_sha256_BYTES crypto_hash_sha256_tweet_BYTES
#define crypto_hash_sha256_VERSION crypto_hash_sha256_tweet_VERSION
#define crypto_hash_sha256_IMPLEMENTATION "crypto_hash/sha256/tweet"
源文件未定义名为crypto_hash_sha256_tweet
的函数。功能上crypto_hash
处理计算哈希值,加上#define
在源文件中实际使用的不存在,这表明我在这里有一些我缺少的第三个组件,例如一些解析器脚本,它重写源文件以匹配标题。