我正在使用此bcrypt库进行一些密码哈希处理。我已经使用提供的makefile生成了一个名为bcrypt.a的库文件。我的代码中也有头文件,并且我使用一个类(Cryto.h / Crypto.cpp)在头函数周围创建包装器。我正在尝试通过以下方式使用.a库文件编译代码:

 g++ -std=c++14 -o geemail auth/auth.cpp services/services.cpp crypto/crypto.cpp  database/database.cpp main.cpp libraries/bcrypt/bcrypt.a -lsqlite3 -lsodium


我已经在我的crypto.h文件中包含了具有正确功能定义的头文件(bcrypt.h)。但是当我运行上面的命令时,我一直收到此错误。

/tmp/ccM1cHRo.o: In function `Crypto::CompareHash(char const*, char const*)':
crypto.cpp:(.text+0x23): undefined reference to `bcrypt_checkpw'
/tmp/ccM1cHRo.o: In function `Crypto::GetGeneratedHash[abi:cxx11](char
const*, char*, char*)':
crypto.cpp:(.text+0x63): undefined reference to `bcrypt_gensalt'
crypto.cpp:(.text+0x7a): undefined reference to `bcrypt_hashpw'
collect2: error: ld returned 1 exit status


看起来它无法找到bcrypt.h文件中声明的任何函数,即使标头已正确包含也是如此。链接这些文件的正确方法是什么?

最佳答案

尝试这个:

g++ -std=c++14 -o geemail auth/auth.cpp services/services.cpp crypto/crypto.cpp  database/database.cpp main.cpp -Llibraries/bcrypt -lbcrypt -lsqlite3 -lsodium

关于c++ - 如何正确链接.a库文件及其标题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47254718/

10-11 22:40
查看更多