我可以假设给定
std::string str;
... // do something to str
Run Code Online (Sandbox Code Playgroud)
以下陈述是否总是如此?
(str.empty() == (str == ""))
Run Code Online (Sandbox Code Playgroud) 假设我们有一个名为"my_app"的主要可执行文件,它使用了其他几个库:3个库是静态链接的,其他3个是动态链接的.它们应该以哪种顺序与"my_app"相关联?
但这些顺序应该以哪种顺序联系起来?
假设我们得到了依赖于libSB的libSA(如在静态A中),以及依赖于libSB的libSC:
libSA -> libSB -> libSC
Run Code Online (Sandbox Code Playgroud)
和三个动态链接库:libDA -> libDB -> libDC(libDA是基本的,libDC是最高的)
这些顺序应该链接在哪?第一个还是最后一个?
g++ ... -g libSA libSB libSC -lDA -lDB -lDC -o my_app
Run Code Online (Sandbox Code Playgroud)
看起来像现在的顺序,但是这样吗?如果任何动态库与静态库或其他方式之间存在依赖关系,该怎么办?
c++ linker shared-libraries dynamic-linking static-libraries
我有几个"未定义的引用"(在链接期间)和"未解析的符号"(在dlopen之后的运行时)我工作的问题.它是一个相当大的makefile系统.
是否有一般规则和指南来链接库和使用编译器标志/选项来规避这些类型的错误?