我安装了Z3,并且能够使用make例子编译C / C ++例子。 但是,当我尝试通过包含“ z3 ++。h”并同时使用lz3链接器标志来编译任何示例代码时,会出现未定义的引用错误。
当我安装Z3并更早地编译相同的代码时,它起作用了。 我没有对Z3代码进行任何更改,但现在它引发了意外错误。
cat test.cpp
#include<z3++.h>
using namespace z3;
int main() {
context c;
expr x = c.int_const("x");
std::cout << x + 1 << "\n";
return 0;
}
g ++ -c test.cpp
g ++ -o测试test.o -lz3
错误: test.o:在函数'z3 :: operator +(z3 :: expr const&,z3 :: expr const&)'中: test.cpp :(。text._ZN2z3plERKNS_4exprES2 _ [_ ZN2z3plERKNS_4exprES2 _] + 0x203):未定义对“ Z3_mk_re_union”的引用 test.o:在函数`z3 :: concat(z3 :: expr const&,z3 :: expr const&)'中: test.cpp :(。text._ZN2z36concatERKNS_4exprES2 _ [_ ZN2z36concatERKNS_4exprES2 _] + 0x76):未定义对“ Z3_is_seq_sort”的引用 test.cpp :(。text._ZN2z36concatERKNS_4exprES2 _ [_ ZN2z36concatERKNS_4exprES2 _] + 0xd3):未定义对“ Z3_mk_seq_concat”的引用 test.cpp :(。text._ZN2z36concatERKNS_4exprES2 _ [_ ZN2z36concatERKNS_4exprES2 _] + 0x11d):未定义对“ Z3_is_re_sort”的引用 test.cpp :(。text._ZN2z36concatERKNS_4exprES2 _ [_ ZN2z36concatERKNS_4exprES2 _] + 0x17a):未定义对“ Z3_mk_re_concat”的引用 collect2:错误:ld返回1退出状态
答案 0 :(得分:0)
迟到的答案,但我认为您应该在构建命令中添加“-lz3”标志。