对另一个静态库中静态库方法的未定义引用
Undefined reference to static library methods inside another static library
未能安装C libzip包装器,因为cmake损坏,我决定自己编译/链接它,因为它足够小。
问题是该LIB具有两个依赖关系zlib
和libzip
。因此,我用这两个,然后使用mingw(Win32(进行.a。然后,我将库链接到程序,然后编译,没有错误。
代码下面:
//lib creation command lines
g++ -c libzippp.cpp -o libzippp.o -std=c++11 -lzlib -lzip
ar rcs libzippp.a libzippp.o
//Programm compilation (simplified)
$(CC) -o $(EXEC) $(OBJ) $(CLFLAG) -lzip -lzlib -lzippp
之后,我尝试执行基本的libzippp方法,但这里开始错误,因为链接器要求未定义的参考。
未定义的参考来自LIB内部,它们是对" libzip"依赖项的不确定的引用
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/.././..
/libzippp.a(libzippp.o):libzippp.cpp:(.text+0x236e):
undefined reference to `_imp__zip_fclose'
但是,如果我简单地使用libzippp作为简单的编译单元编译程序,我可以使用lib而没有任何链接器错误。
下面的示例:
//Compilation works, lib works
$(CC) -o $(EXEC) $(OBJ) libzippp.h libzippp.cpp $(CLFLAG) -lzip -lzlib
作为我,我不是一个经验丰富的程序员,我以为我只是失败了Lib的创建。这是我第一次制作一个需要其他Lib的LIB,我相信我的错误来自这里。
您需要在-lzip
之前移动-lzippp
,否则链接器将不会从libzip链接文件:
$(CC) -o $(EXEC) $(OBJ) $(CLFLAG) -lzippp -lzip -lzlib
这就是静态液体的工作方式。
相关文章:
- Qt 静态库未定义引用
- CMake 不链接 C 和 C++ 静态库(未定义对函数的引用)
- ctypes,添加静态库时未定义的符号
- 在Qt5上去静态库:架构的未定义符号x86_64:
- 对静态常量积分类型的未定义引用
- 对类的静态成员的未定义引用
- 为什么 mfc 中静态文本工具中的变量未定义
- 我正在尝试在我的类中创建一个静态成员,但编译器警告我它是未定义的
- 我可以在将项目编译为静态库(未定义的引用)时在代码中使用 QImage 吗?
- 编译 Rust 静态库并在 C++ 中使用它:未定义的引用
- 链接到 Boost 1.63 静态库时未定义的引用
- 使用静态变量未解析的外部符号/未定义的引用时出错
- boost::system::generic_category 静态链接后未定义
- C++类方法包含对静态变量的未定义引用
- MSYS2静态QT未定义的参考问题
- 带有静态库的Android NDK:链接器始终抛出“未定义的参考”
- 对另一个静态库中静态库方法的未定义引用
- 在链接链接静态(GSOAP)库的共享库时,为什么会得到一个未定义的符号
- 使用静态常量初始化unique_ptr时出现未定义的引用错误
- 正在访问超出范围的静态未定义行为