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

问题描述 投票:2回答:2

早安,

我有一个要编译的文件,并且在其中包含#include到静态链接的二进制文件。

#!/bin/bash

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

我收到以下错误:严重错误:libtextmagic.h:没有这样的文件或目录

我提供的相对路径在当前工作目录是脚本被调用/运行的目录的前提下是正确的。我可能未正确链接二进制文件,并且我已经在互联网上搜索了,但是其他帖子/资源对我没有帮助。

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

c++ linker g++
2个回答
3
投票

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

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


1
投票

#include指令需要“读取”您作为参数提供的头文件,并且不包含在静态库中。

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

© www.soinside.com 2019 - 2024. All rights reserved.