无法将静态二进制文件链接到 #include



你好,

我有一个正在尝试编译的文件,其中包含一个静态链接二进制文件的#include。

#!/bin/bash
g++ -Wall -std=c++17 Message.cpp ../textmagic-rest-cpp/lib/libtextmagic.a

我得到以下错误:致命错误:libtextmagic.h:没有这样的文件或目录

假设当前工作目录是调用/运行脚本的目录,那么我提供的相对路径是正确的。我可能错误地链接了二进制文件,我在互联网上搜索过,但其他帖子/资源对我没有帮助。

请注意,该脚本与Message.cpp在同一目录中运行。

g++具有-I-L标志,可以为您执行此操作。您的标志将如下所示:-I/ThePathToYourHeaders-L/ThePathToYourLib。我不知道g++是否支持相对路径,但绝对路径保证在那里工作。

此外,您可能需要添加一个链接器标志。对于您的项目,它将是-ltextmagic。它只是要链接的.a文件的名称,文件名前面没有lib

#include指令需要"读取"作为参数提供的头文件,而该头文件不包含在静态库中。

可以包括使用源文件的相对路径,也可以使用-I参数将头文件的位置传递给编译器。