问题标签 [shared-libraries]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
259 浏览

shared-libraries - 基于 3rd 方库构建自己的应用程序是否常见?

不确定这个问题是否愚蠢。

但是当我做一些(小)副项目时。我总是在网上冲浪并尝试找到一些第三个图书馆(最好是免费的),然后建立自己的。

有些是控制扩展,例如文件系统浏览器树视图。其中一些库非常流行,例如 iTextSharp。有些非常小众,仅用于解析某些专有文件格式。

我只想问,你也这样吗?(为您自己的项目使用 3rd 方库?

0 投票
2 回答
123 浏览

data-structures - 在arraylist中保存堆栈

我想知道如何将堆栈保存在数组列表中?

0 投票
1 回答
2614 浏览

shared-libraries - 想详细了解共享库相对于静态库的工作方式

我正在创建和链接共享库(.so)。在与他们合作时,弹出了许多问题,当我搜索它们时我找不到令人满意的答案,因此将它们放在这里。我有关于共享库的问题是:

1.) 共享库与静态库有何不同?它们的创建方式和执行方式的主要区别是什么?

2.) 如果是共享库,在什么时候将加载和运行共享库中的特定函数的地址?谁提供这些功能是加载/运行地址?

3.) 与与静态库链接的应用程序相比,与共享库链接的应用程序执行速度会慢吗?

4.) 在这两种情况下,应用程序的可执行文件大小会有所不同吗?

5.) 可以通过进入共享库中定义的函数来进行源代码级调试吗?是否需要任何额外的东西才能使这些功能对应用程序可见?

6.) 使用这两种库的优缺点是什么?

谢谢。

-广告

0 投票
1 回答
136 浏览

iphone - 验证发布版本

我的项目引用了我创建的静态 DLL。设置这些项目以确保发生相应的构建阶段。这意味着,如果我在模拟器/调试中构建,静态库将具有最新的模拟器/调试版本。我可以验证我的应用程序工作正常,除了设备/版本。有没有办法验证设备/版本?这有点像在没有任何验证的情况下把它扔给苹果。

0 投票
1 回答
13352 浏览

objective-c - 如何解决未定义符号错误?

我收到此错误

引用下面的静态方法时:

MyClass 在我的应用程序项目中引用的静态库中定义。当我开始输入“[MyClass”...时,我会收到消息提示。应用程序项目知道 MyClass 存在以及在其上定义了哪些方法。然而,我得到了上述错误。注释掉这个调用允许项目无错误地构建。

在静态库中,我有一个引用库的所有 .h 文件的 .h 文件。这样,应用程序项目只需从静态库中引用一个 .h 文件。静态库项目也有一个应用程序。我用它来测试静态库。我可以很好地完成上述通话。当静态库构建了设备/调试版本并且应用程序项目构建了模拟器/调试时,我通常会看到这些类型的错误。但是,两个构建是同步的。

我知道有一个参考问题,但我不确定如何解决它。有什么建议么?

0 投票
1 回答
712 浏览

perl - 为什么 shl_load() 对于具有线程本地存储的库会失败?

Perl 中的线程默认使用自己的本地存储来存储所有变量,以尽量减少线程对现有非线程感知代码的影响。在 Perl 中,可以使用属性创建线程共享变量:

HP-UX 运行时加载程序不支持动态加载包含 (TLS) 线程本地存储的共享库。
因此,当尝试导入包含 TLS 的模块时,会报告以下错误:

所以我知道为什么我会收到一个错误我只是不清楚为什么很难用 TLS 加载一个库?

0 投票
7 回答
3091 浏览

c++ - 便携式共享对象?

是否可以像 Windows 中的 DLL 一样以可移植的方式使用共享对象文件?

我想知道是否有一种方法可以为 Linux 提供一个可立即使用的编译库。就像您可以在 Windows 中编译 DLL 一样,它可以在任何其他 Windows 上使用(好的,不是任何其他的,但在大多数 Windows 上都可以)。

这在Linux中可能吗?

编辑:
我刚刚醒来并阅读了答案。有一些非常好的。
我不是想隐藏源代码。我只是想提供一个已经编译好的可以使用的库,所以没有编译经验的用户不需要自己做。
因此,我们的想法是提供一个可以在尽可能多的不同 Linux 上运行的 .so 文件。
该库是用 C++ 编写的,使用 STL 和 Boost 库。

0 投票
2 回答
1598 浏览

c++ - LSB AppChecker:针对未使用库的 GCC 链接

我正在使用 LSB AppChecker 检查共享对象 (.so) 的可移植性。
它报告的问题之一是有一个外部库(libm.so.6)没有被使用,但无论如何都链接到了。

如何防止 GCC 链接到这个不需要的库?

编辑:
ldd 命令对我的共享对象的输出是:

0 投票
2 回答
2800 浏览

java - 从 java 代码中轻松使用 windows 静态库(最好使用 JNA)

我必须使用*.libjava 代码中的一些静态 Windows 库(),我可以编写 C++ JNI 包装器,但我宁愿不这样做(没有 C++ 经验)。

使用它的最简单(最少的开发工作量)方式是什么,性能并不重要,因为该代码只会获取一些数据,很可能会在 JAVA 端进行处理。

很可能我会使用JNA,但 AFAIK 它需要动态库,而我有静态库。

我还了关于将静态库转换为动态库的问题。

0 投票
1 回答
24328 浏览

c - 使用 GCC 在共享库中启用调试符号

我正在创建一个共享库,gcc并怀疑共享库可能存在一些内存泄漏。要调试,我需要在创建共享库时启用调试符号。

要构建,我正在使用gcc -g ...-g用于启用调试信息)

但是*.so无论. -g_ -g此外,我没有从VALGRIND.

谁能指出我的错误?