如何链接jsoncpp?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何链接jsoncpp?相关的知识,希望对你有一定的参考价值。

如何使用g ++将jsoncpp与C ++程序链接?我试过了:

g++ -o program program.cpp -L/path/to/library/files -ljsoncpp, -ljson, -llibjsoncpp

但是g ++一直在说:

/usr/bin/ld: cannot find -lsomething
答案

/path/to/library/files中查看您的*.a文件的名称。在我的系统上,我链接到:

-ljson_linux-gcc-4.4.3_libmt

有些库会为你创建一个从lib<name>.alib<name>-<version>.a的链接,但我不认为jsoncpp会自动执行此操作。因此,您需要在链接时指定完整名称。

另一答案

您也可以尝试使用新的Amalgamated版本的jsoncpp,这是0.6.0版本的新版本。

Amalgamated版本允许您通过向项目添加一个带有几个头文件和一个.cpp文件的目录来使用jsoncpp。然后,您可以直接将jsoncpp编译到您的程序中,而无需担心必须链接到任何jsoncpp库。

另一答案

你基本上需要告诉路径和库。

jsoncpp库有pkg-config,您可以使用该命令

`pkg-config --cflags path/to/jsoncpp/build/pkg-config/jsoncpp.pc`

对于包含路径和

`pkg-config --libs ../jsoncpp/build/pkg-config/jsoncpp.pc`

用于链接(当使用g ++运行命令时使用)。要查看-L/libraryPath -ljsoncpp的单个命令,请在终端中运行上面的命令而不使用``。

在Makefile中使用此命令更容易。例如,我的Makefile是:

CXX = g++

CXXFLAGS = -std=c++11
INC_PATH = `pkg-config --cflags ../jsoncpp/build/pkg-config/jsoncpp.pc`


LIBS = `pkg-config --libs ../jsoncpp/build/pkg-config/jsoncpp.pc`
SOURCES := $(wildcard *.cpp)
OBJDIR=obj

OBJECTS := $(patsubst %.cpp,$(OBJDIR)/%.o,$(SOURCES))
DEPENDS := $(patsubst %.cpp,$(OBJDIR)/%.d,$(SOURCES))

# ADD MORE WARNINGS!
WARNING := -Wall -Wextra

# .PHONY means these rules get executed even if
# files of those names exist.
.PHONY: all clean

# The first rule is the default, ie. "make",
# "make all" and "make parking" mean the same
all: yourProjectExecutableName

clean:
    $(RM) $(OBJECTS) $(DEPENDS) parking

# Linking the executable from the object files
yourProjectExecutableName: $(OBJECTS)
    $(CXX) $(WARNING) $(CXXFLAGS) $(INC_PATH) $^ -o $@ $(LIBS)

-include $(DEPENDS)

$(OBJDIR):
    mkdir -p $(OBJDIR)

$(OBJDIR)/%.o: %.cpp Makefile $(OBJDIR)
    $(CXX) $(WARNING) $(CXXFLAGS) $(INC_PATH) -MMD -MP -c $< -o $@

然后在文件的目录中运行make。最终的命令将在终端中打印出来

以上是关于如何链接jsoncpp?的主要内容,如果未能解决你的问题,请参考以下文章

Jsoncpp使用具体解释以及链接问题解决

如何从片段内的列表视图打开链接网址?

如何在安卓ndk工程中引入jsoncpp

如何用 /clr 编译 jsoncpp?

详细地jsoncpp编译方法 和 vs2010中导入第三方库的方法

如何通过cmake用-fPIC编译jsoncpp