Articles of DLL

dynamic加载(DL)库和第一条指令

是否可以使用c中的dynamic加载(DL)库来检索库的第一个指令的地址? 换句话说,我想知道从哪里加载库的地址。

C ++静态库中的共享全局variables:Linux

这在C ++中: 静态库“A”定义了一个全局variablesfoo。 “B”和“C”是两个dynamic库,这两个dynamic库都依赖于A,因此与A静态地链接。 然后B和C结束加载在相同的过程(例如:应用程序加载B和C)。 如果我们在Windows环境中,我们将获得两个不同的foo实例,一个在B中,另一个在C中,这里清楚地解释: C ++静态库中的共享全局variables 怎么样一个Linux环境。 上下文:我们正在把一个windows项目移植到linux上

如何将.so文件链接到.so文件

我正在用C代码创build一个.so文件。 我需要链接一些其他.so文件到正在创build的.so文件。 怎么做? 我试过这个-L{path to file containing library} -l${library name}是不是?

如何在Linux JVM中使用本地的widows DLL

我有一个简单的API与原生函数(JNA)内的DLL文件,只计算一些math的东西。 我在一个JAVA应用程序中使用这个DLL,一切工作正常的Windows JVM。 问题是这个库将被用在Linux JVM中的Linux环境中,并且不会有* .so版本。 我读了几次,有一种方法来加载内存中的葡萄酒的DLL,并从那里使用它,但没有解释如何做到这一点。 有人可以证实或反驳这种方法对我来说。 如果这真的是一个可能的溶剂,请告诉我该怎么做? 编辑:可能是一个解决scheme, 如何从Linux上的Python调用葡萄酒DLL中描述? 我可以以某种方式使用ctypes? 问候wurmi

在程序集中识别库调用

鉴于我从GDB获得的以下程序集,有什么办法可以确定哪个函数被导入? 广发发展的评论告诉我们,我们正在import的puts ,但我怎样才能静态解决这个问题? Dump of assembler code for function puts@plt: 0x00000000004003b8 <+0>: jmpq *0x2004a2(%rip) # 0x600860 <puts@got.plt> 0x00000000004003be <+6>: pushq $0x0 0x00000000004003c3 <+11>: jmpq 0x4003a8

如何处理用dlopen()打开的已更改的库

我在我的程序中使用共享对象,通过dlopen()加载。 当我用mv debug/newLibrary.so plugin/usedLibrary.so覆盖库时,一旦它试图与加载的库进行交互,我的程序就会崩溃。 我什至不能使用dlclose(),这让我一个SIGSEV。 处理这种情况的最好方法是什么? 操作系统是Linux 编辑:实际的代码 void DynamicallyLoadedLibrary::loadLibrary() { // ModificationTime updaten lastModificationTime = modificationTime(); // Library laden libraryHandle = dlopen(path.c_str(), RTLD_NOW); if (!libraryHandle) { // Library gefunden? throw DynamicLibraryException("Dynamic Library not found: " + path + "\n" + dlerror()); } // Funktion laden externalFunction = (dll_function) dlsym(libraryHandle, "run"); char *error; if ((error […]

在Linux下给R访问一个DLL

我有一个在Windows中开发的R脚本,它需要一个特定的DLL在path中,因为它使用了一些函数(通过dyn.load函数)。 是否有可能使脚本在Linux下工作? 也许用酒?

如何检查一个文件是否是DLL?

给定一个文件,我想检查这是一个DLL,一个共享对象(Linux)或一个dylib(Mac OS X),或者不同的东西。 我的主要兴趣是在Linux和Mac OS X上区分可执行文件和DLL。对于Windows,扩展应该足以解决我的问题。 我已经检查过魔术数字技术不适用于Linux,因为可执行文件和共享对象都具有相同的编号。

像Linux上的.dll的东西 – 如何让他们?

我有程序使用gtkmm,gtkglextmm和exiv2。 我想包含这些库的可执行文件,因为如果用户没有在他/她的系统上的应用程序将无法正常工作。 在Windows上,.dll文件解决了这个问题(我把它们放在与输出文件相同的目录中)。 如何在Linux上附加类似的库? 有什么工具可以帮助吗? 我不能强制用户安装依赖关系。

从Linux库源构build一个Win32 DLL

我试图从audioDSP相关的Linux库( http://breakfastquay.com/rubberband/ )build立一个Win32 DLL。 有Linux的makefile和configuration脚本,但没有Windows的帮助。 作者提供了一个使用该库的示例应用程序的Win32二进制文件,并且我看到一些散落在附近的“#ifdef MSVC”和“#ifdef WIN32”,所以我不认为我是从头开始的,米卡住了。 由于我在这两个平台的编程知识相当有限,所以我会很感激任何帮助。 首先,在这里开始的正确方法是什么? 视觉工作室? Cygwin的? 最初,我开始在Visual Studio中创build一个Win32 DLL项目,添加源文件,考虑添加一个.def文件等,但在某些时候,我觉得这是无济于事。 至于Cygwin,这是第一次使用它,我甚至不知道这是Cygwindevise的。 是吗? 在Cygwin上,我运行了./configure并卡住了这样的东西: “检查SRC …configuration:错误:不符合软件包要求(采样率):没有find软件包”采样率“ 看完日志后,看来pkg-config正在查找samplerate.pc。 如何在Windows中处理包? libsamplerate只是一个开源的库,我有这个源代码和一个DLL。 但我不知道如何使用它们来满足librubberband的依赖性要求(这是我正在尝试构build的) 我完全失去了这一点,如果任何人都可以给我一个正确的方向,并有一个更简单的方法来做到这一点? 提前谢谢了。