static-libraries相关内容

如何共享我的C/C++项目并隐藏一些源代码?

我想把我用C/C++(LINUX环境GCC/g++编译器)写的项目作为共享库/静态库分享,而不是真正分享源代码。这样其他用户就可以在不知道我的源代码的情况下使用我的项目。谁能告诉我如何以.so/.a格式共享它? 假设我的项目如下: main.cpp, Source1.cpp, Source2.cpp, Source3.cpp, head1.h, 生成文件 如何通过隐藏文件Sour ..
发布时间:2022-07-13 10:57:32 服务器开发

静态库是如何工作的?(C/C++)

我知道如何使用和创建它们,但我找不到关于它是如何实现的、函数调用是如何发生的等等的文本,有人可以帮助我了解这些信息吗?因为我想了解它们,而不仅仅是知道它是什么以及它是如何工作的 推荐答案 您可能知道,当您编译一个源文件时,您会得到一个目标文件。根据您的平台,它的扩展名可能是.o、.obj或其他任何文件。静态库基本上是目标文件的集合,有点像.Zip文件,但可能没有压缩。当尝试生成可执行文 ..
发布时间:2022-07-13 10:46:26 C/C++开发

在构建时更改子例程名称以避免Xcode中的冲突

背景 我正在构建一个iOS应用程序(我将在这里将其称为MyApp),它将依赖于几个单独的静态库(我将称为Lib1、Lib2、Lib3、...)所完成的计算。每个库都构建在它自己的项目中,然后导入到单个工作区(因此工作区将包含MyApp、Lib1、Lib2、...)。有关如何设置的更多详细信息here。这些库被独立于MyApp的其他产品使用,所以我希望最小化这些库中的任何更改。这些库也是用(纯)C ..
发布时间:2022-05-26 22:43:23 移动开发

隐藏可传递的外部依赖项/将库与CMake相结合(&H)

这个问题可能部分重复,例如this question,但更多的是关于如果有更好的解决方案的话是什么。由于此问题结束时相当长,我用";+q+ 标记了特定问题。 我有这样的情况,我写了一个小库B,它依赖于其他一些大型项目A拆分成许多库A1, A2, ..., An,我的库有一些依赖于这些库,另一些不依赖于这些库。做正确的链接有点麻烦。这个库开始被其他人使用,我想避免每个人都经历这个糟糕的链 ..
发布时间:2022-04-08 20:16:32 C/C++开发

将std::字符串转换为SWIFT字符串

简写: 如何将std::string(由.cpp函数使用桥接从.SWIFT文件调用返回的对象)转换为SWIFTString? 长版本: 我有一个用C++编写的库,我必须使用Swift调用一些代码。我创建了一个桥,在我的Xcode项目中添加了两个文件: 桥头,允许SWIFT调用C函数(AFAIK SWIFT不能直接调用C++函数,需要通过C函数传递) //file br ..
发布时间:2022-04-08 20:15:11 移动开发

如何使用DLL在应用程序中模仿静态库中全局变量的多个实例的行为?

我们有一个用C/C++编写的应用程序,它被分成单个EXE和多个DLL。这些DLL中的每个都使用相同的静态库(utilities.lib)。 实用程序静态库中的任何全局变量在运行时实际上都会在应用程序中拥有多个实例。utilities.lib已链接到的每个模块(即DLL或EXE)都有一个全局变量副本。 (这都是众所周知的,而且很好,但是有必要回顾一下静态库在DLL上下文中的行为背景。) 现 ..
发布时间:2022-04-08 20:10:56 C/C++开发

C?静态链接模块插件系统?

我需要编写一个插件系统,与Linux上的静态链接模块一起工作。 我不希望核心(Main函数)显式调用模块的init函数。 我能想到的最接近的类比,就是我想要实现的东西,是Linux内核。 在那里,可以静态编译和链接未知数量的模块/插件,但模块的启动方式与动态加载时一样。 我有这个 core/main.c: int main(void) { return 0; } co ..
发布时间:2022-04-08 20:08:13 其他开发

如何使用CMake将我自己的.o文件与第三方静态库合并,以创建新的合并后的静态库?

我的公司销售依赖于NVIDIA CUDA工具包的商业Linux应用程序。然而,我们的许多客户在他们的计算机上没有超级用户访问权限,并且无法自己安装CUDA,因此我们希望将CUDA静态库与我们的应用程序捆绑在一起。 我们的法律部门表示,我们需要实际将库的内容包含在我们应用程序的一个现有静态库中,而不是仅将CUDA静态库作为单独的文件提供。我可以手动创建这样一个合并库,它工作得很好: li ..
发布时间:2022-04-08 20:05:51 其他开发

从C静态库中删除内部符号

我正在处理一些作为静态库发布的嵌入式代码。我们希望从库中删除所有内部符号,并仅使API符号可见。 下面是我们要做的一个示例:假设您有一个名为internal.c的文件和一个名为api.c的文件,如下所示: /* internal.c */ int fibonacci(int n) { /* Compute the nth Fibonacci number and return ..
发布时间:2022-04-08 20:03:16 其他开发

在 Apple 上合并静态库

我尝试了这个问题中的方法, 但是 ar 的 linux 版本似乎与 mac 版本不一样,因为我未能再次合并目标文件. 我基本上想做的是通过运行脚本构建阶段将另一个静态库合并到我的 Xcode 静态库构建产品中. 很遗憾,我无法将其他库直接编译到我的项目中,因为它有自己的构建系统(因此我使用编译后的库). 我认为应该可以通过 ar 将其他库合并到 Xcode 生成的库中,而无需反编 ..
发布时间:2022-01-31 20:58:49 移动开发

文件是通用的(三个切片),但它不包含 iOS 上静态库的(n)ARMv7-s 切片错误,无论如何要绕过?

我升级了 Xcode 版本,当使用外部静态库时,我收到以下消息: ld:文件是通用的(3 个切片)但不包含 a(n) armv7s 切片:/file/location for architecture armv7sclang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) 如果库的开发者还没有更新他们的库,有没有办法绕过这个并添加对库的支持? 解决方案 如果你想取 ..
发布时间:2022-01-31 20:56:42 移动开发

如何使用 CMake 在 Android Studio 3.2 中创建静态库(.a 文件)

现在我在 Android Studio 3.2 中创建了一个包含 c++ 支持的新项目,它自然具有 native-lib.cpp,CMakeLists.txt 如下所示: add_library( # 设置库的名称.本机库# 将库设置为共享库.共享# 提供源文件的相对路径.src/main/cpp/native-lib.cpp) 现在如果我构建这个项目,我可以在一些“调试"目录中找到 libn ..