草庐IT

c++ - C++ 静态库可以链接到共享库吗?

假设我有一个静态C++库static.lib,我想从C++共享库中调用一些函数,比如shared.lib。有可能吗?现在假设我有另一个共享库,比如shared2.lib,它链接到static.lib但不链接到shared.lib。在这种情况下,链接器会自动将shared2.lib链接到shared.lib吗?我正在使用MicrosoftVisualStudio2003。 最佳答案 静态库未链接。它们只是对象文件(*.obj或*.o)的集合,它们一起归档到库文件(有点像tar/zip文件)中,以使链接器更容易找到所需的符号。静态库可以

c++ - C++ 静态库可以链接到共享库吗?

假设我有一个静态C++库static.lib,我想从C++共享库中调用一些函数,比如shared.lib。有可能吗?现在假设我有另一个共享库,比如shared2.lib,它链接到static.lib但不链接到shared.lib。在这种情况下,链接器会自动将shared2.lib链接到shared.lib吗?我正在使用MicrosoftVisualStudio2003。 最佳答案 静态库未链接。它们只是对象文件(*.obj或*.o)的集合,它们一起归档到库文件(有点像tar/zip文件)中,以使链接器更容易找到所需的符号。静态库可以

c++ - CMake:将 libgcc 和 libstdc++ 静态链接到共享库中

问题:我在安装Ubuntu16.04时使用CMake和GCC4.9将glibcc/glibc++链接到共享库时遇到困难。附加条件:加载共享库会给RedHat生产环境(我将它复制到的地方)带来问题,我相信因为它使用了不同的libstc++版本(错误:未找到GLIBCXX_3_4_20)。我没有sudo权限,无法升级机器。正如我从this得出的那样博客,这个post,我尝试使用以下方法链接静态链接与libgcc和libgc++:set(CMAKE_EXE_LINKER_FLAGS"-static-libgcc-static-libstdc++-static")再次使用set(CMAKE_S

c++ - CMake:将 libgcc 和 libstdc++ 静态链接到共享库中

问题:我在安装Ubuntu16.04时使用CMake和GCC4.9将glibcc/glibc++链接到共享库时遇到困难。附加条件:加载共享库会给RedHat生产环境(我将它复制到的地方)带来问题,我相信因为它使用了不同的libstc++版本(错误:未找到GLIBCXX_3_4_20)。我没有sudo权限,无法升级机器。正如我从this得出的那样博客,这个post,我尝试使用以下方法链接静态链接与libgcc和libgc++:set(CMAKE_EXE_LINKER_FLAGS"-static-libgcc-static-libstdc++-static")再次使用set(CMAKE_S

c++将输出流连接到输入流

我想做的是创建一种“管道”(就像进程之间的管道),但在同一程序中的c++iostream之间。我有一个需要输入流作为参数的函数,但我的数据来自输出流。那么有没有一种标准方法可以将std::ostream的输出通过管道传输到std::istream的输入? 最佳答案 您可以创建一个std::streambuf输出到一个缓冲区,当缓冲区满时std::overflow()阻塞。另一方面,您将有一个输入缓冲区,当缓冲区为空时,该缓冲区会阻塞在underflow()上。显然,阅读和写作将在两个不同的线程中。棘手的问题是如何同步两个缓冲区:流在

c++将输出流连接到输入流

我想做的是创建一种“管道”(就像进程之间的管道),但在同一程序中的c++iostream之间。我有一个需要输入流作为参数的函数,但我的数据来自输出流。那么有没有一种标准方法可以将std::ostream的输出通过管道传输到std::istream的输入? 最佳答案 您可以创建一个std::streambuf输出到一个缓冲区,当缓冲区满时std::overflow()阻塞。另一方面,您将有一个输入缓冲区,当缓冲区为空时,该缓冲区会阻塞在underflow()上。显然,阅读和写作将在两个不同的线程中。棘手的问题是如何同步两个缓冲区:流在

c++ - 将 LLVM JIT 代码链接到静态 LLVM 库?

我正在实现一个跨平台(MacOSX、Windows和Linux)应用程序,该应用程序将对财务数据进行大量CPU密集型分析。出于速度原因,大部分分析引擎将用C++编写,用户可访问的脚本引擎与C++测试引擎交互。随着时间的推移,我想编写几个脚本前端来模拟其他流行的软件,并拥有大量的用户群。第一个方面将是类似VisualBasic的脚本语言。我认为LLVM非常适合我的需求。由于数据量巨大,性能非常重要;运行一次测试可能需要数小时或数天才能得到答案。我相信使用LLVM还可以让我使用单一的后端解决方案,同时随着时间的推移为不同风格的脚本语言实现不同的前端。测试引擎本身将与界面分离,测试甚至会在单

c++ - 将 LLVM JIT 代码链接到静态 LLVM 库?

我正在实现一个跨平台(MacOSX、Windows和Linux)应用程序,该应用程序将对财务数据进行大量CPU密集型分析。出于速度原因,大部分分析引擎将用C++编写,用户可访问的脚本引擎与C++测试引擎交互。随着时间的推移,我想编写几个脚本前端来模拟其他流行的软件,并拥有大量的用户群。第一个方面将是类似VisualBasic的脚本语言。我认为LLVM非常适合我的需求。由于数据量巨大,性能非常重要;运行一次测试可能需要数小时或数天才能得到答案。我相信使用LLVM还可以让我使用单一的后端解决方案,同时随着时间的推移为不同风格的脚本语言实现不同的前端。测试引擎本身将与界面分离,测试甚至会在单

c++ - 静态库如何链接到依赖项?

假设我有libA。例如,它依赖于libSomething,因为libA的非内联方法调用libSomething.h中的方法这一简单事实。在这种情况下,依赖关系如何联系起来?libA在编译时是否必须静态链接到libSomething,或者libA的用户(使用libA的应用程序)是否需要同时链接到libA和libSomething?谢谢 最佳答案 静态链接只是将整个项目(函数、常量等)复制到生成的可执行文件中。如果静态库的代码包含对某些共享库项的引用,这些引用将成为生成的可执行文件中的依赖项。如果您链接库而不是可执行文件,则同样如此。T

c++ - 静态库如何链接到依赖项?

假设我有libA。例如,它依赖于libSomething,因为libA的非内联方法调用libSomething.h中的方法这一简单事实。在这种情况下,依赖关系如何联系起来?libA在编译时是否必须静态链接到libSomething,或者libA的用户(使用libA的应用程序)是否需要同时链接到libA和libSomething?谢谢 最佳答案 静态链接只是将整个项目(函数、常量等)复制到生成的可执行文件中。如果静态库的代码包含对某些共享库项的引用,这些引用将成为生成的可执行文件中的依赖项。如果您链接库而不是可执行文件,则同样如此。T