在C++项目中使用g++编译链接Botan库的问题求助
C++项目链接Botan库时头文件找不到的问题
项目目录结构
C:. ├───.vscode ├───botan │ └───internal └───lib ├───botan │ ├───.github │ │ ├───actions │ │ │ └───setup-build-agent │ │ └───workflows │ ├───build │ │ ├───docs ...
尝试的编译命令
g++ main.cpp -o main.exe -Ilib/botan/build/include/botan -Llib/botan -lbotan-3
main.cpp代码
#include <botan/aes.h>
报错信息
main.cpp:1:10: fatal error: botan/aes.h: No such file or directory 1 | #include <botan/aes.h> | ^~~~~~~~~~~~~ compilation terminated.
补充说明
- 试过Botan下其他头文件,同样报找不到的错误
- 已经成功编译完成Botan库
解决方法
1. 修正头文件搜索路径
你当前-I参数指定的lib/botan/build/include/botan是错误的。因为#include <botan/aes.h>要求编译器在-I指定的目录下,找到botan子目录里的aes.h。所以应该把-I指向包含botan目录的上级路径,也就是lib/botan/build/include。
同时,编译后的Botan库文件一般在build/lib目录下,不是lib/botan根目录,所以-L参数也要调整。修正后的编译命令:
g++ main.cpp -o main.exe -Ilib/botan/build/include -Llib/botan/build/lib -lbotan-3
2. 确认头文件实际位置
手动去lib/botan/build/include目录下检查,是否存在botan子目录,且里面有aes.h等头文件。如果实际路径和这个不符,把-I参数改成正确的上级目录即可。
3. 核对Botan编译配置
如果编译Botan时指定了自定义安装前缀,头文件可能不在build/include里,而是在你指定的安装路径中。可以重新查看Botan编译时的输出,或者直接在文件系统里搜索aes.h,找到正确的路径后再调整编译参数。
内容的提问来源于stack exchange,提问作者Syed Salman
相关产品推荐
相关产品推荐

