问题标签 [dynamic-linking]

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 投票
18 回答
265752 浏览

c++ - 何时使用动态库与静态库

在 C++ 中创建类库时,您可以在动态 ( .dll, .so) 和静态 ( .lib, .a) 库之间进行选择。它们之间有什么区别,什么时候适合使用?

0 投票
4 回答
2910 浏览

python - 从python加载dll

我正在从我在这里找到的一些源代码构建一个 python 应用程序

我已经设法通过搜索网络来编译和修复一些问题,但我被困在这一点上:

运行应用程序时会出现此消息。

替代文字 http://img511.imageshack.us/img511/4481/loadfr0.png

这个 python 应用程序使用 swig 链接到 c/c++ 代码。

我有 VC++2005 速成版,我用它与 scons 和 Python 2.5 一起编译(也尝试过 2.4)

试图加载的 dll 是“msvcr80.dll”,因为在消息是“msvcr80.dll”之前找不到或类似的东西,所以我得到它并将它放在 window32 文件夹中。

对于我在这里读到的内容:http: //msdn.microsoft.com/en-us/library/ms235591 (VS.80).aspx

解决方案是使用清单和 dll 文件运行 MT。我已经这样做了,也不起作用。

谁能指出我正确的方向?

这是清单文件的内容:

我现在要尝试 Python 2.6,我不太确定是否理解这个问题,但是 Python 2.5 和 Python 2.5 .exe 在 .exe 文件中有字符串“MSVCR71.dll”。但这可能无关紧要。

附言。如果一切都像 jar 文件一样简单:(

这是完整性的堆栈跟踪

0 投票
2 回答
8386 浏览

linux - 加载多个不同版本的共享库

我在 Linux 上有一个可执行文件,它加载libfoo.so.1(即 a SONAME)作为其依赖项之一(通过另一个共享库)。它还链接到另一个系统库,而后者又链接到系统版本libfoo.so.2. 结果,两者 libfoo.so.1都在执行期间被加载,并且libfoo.so.2本应从版本 1 的库中调用函数的代码最终会从版本 2 的较新系统库中调用(二进制不兼容)函数,因为某些符号保持不变。结果通常是堆栈粉碎和随后的段错误。

现在,链接到旧版本的库是一个封闭源代码的第三方库,我无法控制libfoo它编译的版本。假设剩下的唯一选择是重建一堆当前链接到的系统库libfoo.so.2以链接到libfoo.so.1.

有没有办法避免用链接到旧的本地副本替换系统库libfoo?我可以加载这两个库并让代码调用正确版本的符号吗?所以我需要一些特殊的符号级版本控制?

0 投票
2 回答
6747 浏览

c - 使用 dlsym 并将 -ldl 添加到标志

我正在尝试编写一个使用 的 C 程序dlysm,并且我不断收到对 dlysm 的未定义引用。我想我需要设置我的-ldl标志,但我不知道该怎么做。

我对 linux 和设置变量非常陌生。如果这是我需要做的,有人可以帮助我使用命令吗?

0 投票
2 回答
1937 浏览

java - Calling Java (or python or perl) from a PHP script

I've been trying to build a simple prototype application in Django, and am reaching the point of giving up, sadly, as it's just too complicated (I know it would be worth it in the long-run, but I really just don't have enough time available -- I need something up and running in a few days). So, I'm now thinking of going with PHP instead, as it's the method for creating dynamic web content I'm most familiar with, and I know I can get something working quickly.

My application, while simple, is probably going to be doing some reasonably complex AI stuff, and it may be that libraries don't exist for what I need in PHP. So I'm wondering how easy / possible it is for a PHP script to "call" a Java program or Python script or a program or script in another language. It's not entirely clear to me what exactly I mean by "call" in this context, but I guess I probably mean that ideally I'd like to define a function in, let's say Java, and then be able to call it from PHP. If that's not possible, then I guess my best bet (assuming I do go with PHP) will be to pass control directly to the external program explicitly through a POST or GET to a CGI program or similar.

Feel free to convince me I should stick with Django, although I'm really at the point where I just can't figure out what model I need to produce the HTML form I want, which seems such a basic thing that I fear for my chances of doing anything more complex...

Alternatively, anyone who can offer any advice on linking PHP and other languages, that'll be grateful received.

0 投票
5 回答
95306 浏览

c# - “静态链接”和“动态链接”是什么意思?

我经常听到术语“静态链接”和“动态链接”,通常是指用CC++C#编写的代码。它们是什么,它们到底在说什么,它们在连接什么?

0 投票
1 回答
169 浏览

resources - 关于编译中链接过程的好资源

我一直在写代码,我一直认为编译的链接阶段非常简单,但是最近我不得不在应用程序中添加一个插件系统,并且我遇到了很多编译和运行时问题,由于我对这件事完全缺乏了解。我现在已经让它工作得很好,并且在这个过程中学到了很多东西,但是现在我意识到我在这个主题上还有很多东西要学,我想更多地探索这个主题。所以我想知道是否有人对整个“代码部分、符号、链接、动态/静态库......”业务的文章、博客文章或书籍有很好的指导。

我正在使用 gcc 和 ld 在 Linux 上进行开发,但我也对 M$ 的做事方式感兴趣,我渴望知识:)

谢谢!

0 投票
1 回答
171 浏览

c - C 标识符限制

如何从 C 中调用名称损坏的符号?

我希望能够使用用我的 C 语言编写的代码路径。函数调用约定大致相同。只是我必须在导出的符号中修改版本和模块路径,并且我具有与 C 相同的标识符约定,因此我不能只使用下划线。

0 投票
1 回答
174 浏览

x86 - 与 smalltalk 对象的动态链接

我计划在我的 smalltalk 方言中实现动态链接。问题在于让消息传递与动态链接一起工作。

消息传递本身就是这么简单:将带有选择器的消息发送给对象,对象从它的协议中选择与选择器匹配的方法,然后处理与消息绑定的数据并返回结果。

在基于图像的实现中,可以以非常直接的方式实现消息传递 - 您的消息选择器可以只是从全局符号表转换而来的整数,您的协议可以只是其中包含整数和地址的哈希表。假设它全部用该全局符号表编译成一个大图像。

在动态链接中,您不能假设符号表指向正确的选择器。您可以使用字符串作为选择器来解决问题,但您注定语言会变慢。

有一种方法,它涉及复制协议和选择器表,以便进程正确地重新定位它们。但这听起来像是一项相当多的工作。

有没有更好的方法来解决这个问题?另外,动态链接值得吗?如何实现选择器和协议的重定位?

0 投票
5 回答
17324 浏览

c++ - g++:静态库和动态库应该以什么顺序链接?

假设我们有一个名为“my_app”的主可执行文件,它使用了其他几个库:3 个库是静态链接的,另外 3 个是动态链接的。它们应该按什么顺序与“my_app”相关联?

但是这些应该以什么顺序联系起来呢?

假设我们得到了依赖于 libSB 的 libSA(如在静态 A 中)和依赖于 libSB 的 libSC:

和三个动态库:(libDA -> libDB -> libDClibDA基本的,libDC是最高的)

这些应该按什么顺序链接?基本的第一个还是最后一个?

似乎是正确的顺序,但是这样吗?如果任何动态库与静态库或其他方式之间存在依赖关系怎么办?