不能 link 一个静态二进制文件来 #include 它

Can't link a static binary to #include it

美好的一天,

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

#!/bin/bash

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

我收到以下错误:致命错误:libtextmagic.h:没有那个文件或目录

假设当前工作目录是脚本所在的目录,我提供的相对路径是正确的called/ran。我可能错误地链接了二进制文件,我在互联网上搜索过,但另一个 posts/resources 没有帮助我。

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

#include 指令需要 "read" 您给它的头文件作为参数,而这不包含在静态库中。

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

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

您可能还需要添加一个 linker 标志。对于您的项目,它将是 -ltextmagic。它只是您要 link 使用的 .a 文件的名称,文件名前面没有 lib