c – 如何加载具有附着力的库?

这可能不是一个棘手的问题,我是一个C新手.

我正在尝试使用一个名为QuantLib的库来保持REPL.

我可以通过这样做在GCC中加载库

#include "ql/quantlib.hpp"

然后使用-lQuantLib进行编译.

我一直在尝试下面3行的排列:

.I "ql/quantlib.hpp"
#include "ql/quantlib.hpp"
.L QuantLib

如果我首先运行#include,我会收到一个很长的错误,包括像

You are probably missing the definition of
QuantLib::AbcdAtmVolCurve::accept(QuantLib::AcyclicVisitor&) Maybe you
need to load the corresponding shared library?

但是,如果我跑

.I "ql/quantlib.hpp"
#include "ql/quantlib.hpp"

那一切似乎都很好.

.L Quantlib导致

input_line_4:1:10: fatal error: 'QuantLib' file not found
#include "QuantLib"

无论何时运行.

在kfsone的评论之后我尝试了以下内容

.L /usr/lib/libQuantLib.so
#include "ql/quantlib.hpp"

这给出了一个简短的错误!

IncrementalExecutor::executeFunction: symbol '_ZN8QuantLib5ErrorC1ERKSslS2_S2_' unresolved while linking function '__cxx_global_var_init34'!
You are probably missing the definition of QuantLib::Error::Error(std::string const&, long, std::string const&, std::string const&)
Maybe you need to load the corresponding shared library?

最佳答案 Cling需要知道您要使用的结构/函数的语法,并拥有执行的二进制代码.

对于语法,您必须添加include,例如:

#include "myfile.hpp"

对于二进制代码,您必须像这样加载库:

#pragma cling load("myfile.so.9.220.0")
点赞