静态和共享库链接器错误

     2023-02-22     159

关键词:

【中文标题】静态和共享库链接器错误【英文标题】:Static and shared libraries linker error 【发布时间】:2013-04-13 17:31:42 【问题描述】:

我正在使用 NDK(Android 的原生编译器工具)。所以,情况是这样的:

Static boost → Shared helpers
                       ↓
                  Shared Game

Helpers 是一些用于游戏开发的共享库。 shared game 是一个包含在 java 代码中的库(作为本地库加载)。 Helpers lib 在内部使用 boost,链接器在这里很好。共享游戏通过 helpers api 使用 boost 但编译失败。

链接器无法解析 boost_system 库中的某些符号。所以,我确实是这样的:

Static boost → Shared helpers
     |                  ↓
     +----------- → Shared Game

现在它编译得很好。怎么了?我认为我可以将 boost 链接到 helpers 并在共享游戏中使用它们。

【问题讨论】:

【参考方案1】:

没有错。正如您所说,您希望shared game 仅使用由shared helpers 动态库导出的shared helpers API。你的错误是shared game 仍然依赖于一些裸露的 Boost API,这些 API 显然不是由 shared helpers 导出的。这就是为什么您也必须将 Boost 显式链接到 shared game,以便正确解析这些 Boost 符号。

如果你想从 Boost API 中完全抽象出来并消除这种依赖,那么你必须通过扩展 shared helpers 来包装这个 Boost API(你需要在 shared game 中)(当然不要忘记也从shared helpers 导出这个包装的 API)。

【讨论】:

gcc 链接器库搜索顺序;路径加静态与共享

】gcc链接器库搜索顺序;路径加静态与共享【英文标题】:gcclinkerlibrarysearchorder;pathsplusstaticvsshared【发布时间】:2015-02-1913:44:11【问题描述】:通读gcc手册,我相信以下两种说法是正确的:在“默认”路径之前搜索命令行中指定... 查看详情

静态和动态链接库

】静态和动态链接库【英文标题】:StaticandDynamicLinkingLibraries【发布时间】:2013-08-2311:53:43【问题描述】:我有一些关于链接库的问题。链接器如何决定我要链接的库是静态链接还是动态链接?是由文件扩展名(.a/.so)决定的吗... 查看详情

静态链接库时出现链接器错误

】静态链接库时出现链接器错误【英文标题】:Linkererrorwithglewwhenlibraryisstaticallylinked【发布时间】:2015-11-0809:07:41【问题描述】:我正在尝试在VisualStudio2012中构建一个opengl项目。我想静态包含​​glew库,所以我从源代码构建它... 查看详情

静态库的c ++链接器错误

】静态库的c++链接器错误【英文标题】:c++Linkererrorwithstaticlibrary【发布时间】:2018-06-0608:02:49【问题描述】:我正在尝试包含使用静态方法创建的静态库,但在尝试调用该方法时在运行时出现以下错误:[INFO][1528271039.635221775]:... 查看详情

静态库和共享库

Q:静态库和共享库的区别A:静态库是牺牲了空间效率,换取了时间效率,共享库是牺牲了时间效率换取了空间效率 linux上扩展名不同:静态库以.a结尾,共享库以.so结尾linux储存位置:静态库的保存位置和共享库是一样的/lib(... 查看详情

qt共享库(动态链接库)和静态链接库的创建及调用

前言:编译器QtCreator,系统环境win764位 1.创建共享库:新建文件或项目->选择Library和c++库->选择共享库->下一步(工程名为sharedlib)生成的目录结构如图:修改sharedlib.h中的代码://sharedlib.h#ifndefSHAREDLIB_H#defineSHAREDLIB_H#include"sharedli... 查看详情

链接器优化共享库

】链接器优化共享库【英文标题】:Linkeroptimizingoutsharedlibrary【发布时间】:2020-03-1310:58:23【问题描述】:使用CMake和gcc/clang编译器我想从这个文件(Registrator.cpp)创建一个共享库:#include...namespacestructRegistratorRegistrator()...~Registrator(... 查看详情

Autoconf:链接器错误链接到自定义库

...含一个链接到一些外部库(即gcrypt、gpg-error、z和ssh2)的共享库。让我们称之为“mylib”。这个库构建完美,我可以看到libtool正确链接了依赖项。libtool:link:ppc-l 查看详情

带有单元测试的 Objective-C 静态库中的链接器错误

】带有单元测试的Objective-C静态库中的链接器错误【英文标题】:LinkerErrorinObjective-Cstaticlibrarywithunittesting【发布时间】:2010-10-0422:54:00【问题描述】:在我的CocoaTouch静态库项目中,我有一个单独的目标,用于使用OCUnit进行单元... 查看详情

与 MinGW 的静态和动态/共享链接

】与MinGW的静态和动态/共享链接【英文标题】:StaticandDynamic/SharedLinkingwithMinGW【发布时间】:2013-04-0615:26:45【问题描述】:我想从一个简单的链接用法开始来解释我的问题。假设有一个库z可以编译为共享库libz.dll(D:/libs/z/shared/lib... 查看详情

静态库和共享库(代码片段)

...码实现,就可以将源代码编译成库提供。库分为共享库和静态库。静态库在程序的链接阶段被复制到了程序中,和程序运行的时候没有关系。动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供... 查看详情

静态库“libiphone-exif.a”的链接器命令失败错误 [重复]

】静态库“libiphone-exif.a”的链接器命令失败错误[重复]【英文标题】:Linkercommandfailederrorforstaticlibrary\'libiphone-exif.a\'[duplicate]【发布时间】:2013-12-1906:50:15【问题描述】:我已经下载了一个源代码,它附在我的邮件中。有一个名... 查看详情

cmake:共享库和静态库的排序重要吗?

】cmake:共享库和静态库的排序重要吗?【英文标题】:cmake:orderingofsharedandstaticlibrariesimportant?【发布时间】:2016-04-2020:57:51【问题描述】:我正在创建一个二进制文件并链接依赖项。所有二进制文件都将链接到libpthread.so发布模... 查看详情

cmake和静态库顺序

目录目录1前言1方法1附1:链接静态库的顺序问题2附2:再议GCC编译时的静态库依赖次顺问题3附3:gcc链接参数--whole-archive的作用4附4:让有些“-l”链接静态库,而另一些链接共享库?6附5:相关博文6 前言C/C++程序的许多同学... 查看详情

qt creator qt5.1 vs2010 使用静态库时链接器错误

】qtcreatorqt5.1vs2010使用静态库时链接器错误【英文标题】:qtcreatorqt5.1vs2010linkererrorwhenusingstaticlibrary【发布时间】:2013-09-2320:23:29【问题描述】:当我尝试在带有qt5.1的qtcreater中使用使用vs2010编译的静态库时遇到问题。我正在使用... 查看详情

库依赖“转发”,或部分静态库?

】库依赖“转发”,或部分静态库?【英文标题】:Librarydependency"forwarding",orpartiallystaticlibraries?【发布时间】:2012-08-2211:11:57【问题描述】:假设我有A.lib和B.dll(带有自己的B.lib),它们实际上是一回事(它们共享标题... 查看详情

链接静态库时链接器可以省略目标文件吗?

】链接静态库时链接器可以省略目标文件吗?【英文标题】:canlinkeromitobjectfilewhenlinkingstaticlib?【发布时间】:2010-12-0516:39:49【问题描述】:我有一个静态库(lib.a)和一个链接到它的程序。该库没有任何入口点,在使用它之前总是... 查看详情

动态链接库和静态链接库的区别

...Windows操作系统中,实现共享函数库概念的一种方式。2、静态链接库:函数和数据被编译进一个二进制文件(通常扩展名为*.LIB),VisualC++的编译器在链接过程中将从静态库中恢复这些函数和数据并把他们和应用程序中的其他模... 查看详情