腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
视频
沙龙
3
回答
在Windows上同时使用.so和.dll
、
、
、
我正在用C++在windows中编写一个程序,在这个程序中,用户可以编译动态链接库(windows)或共享目标文件(linux)形式的扩展。 在windows上,可以使用LoadLibrary函数加载动态链接库。在linux上加载.dlls,是否可以对windows上的.so文件执行同样的操作,反之亦然?
浏览 0
提问于2010-07-13
得票数 6
回答已采纳
2
回答
在linux上加载多个类似的共享库
、
、
、
我正在编写创建“模型”的代码。模型是从XML文件创建的,其表示的一部分是动态生成的C代码。这段C代码被动态编译到一个动态加载的共享库中(使用POCO共享库类)。共享库主要包含小函数,模型创建的一部分是填充指向这些函数的函数指针。所有这些都运行得很好。然而,同时创建多个模型会导致问题。 我认为这与Linux上的动态加载如何工作有关,以及每个共享库都包含具有相同名称的函数的事实。这是PIC造成的吗?从共享库函数中检索数据时,问题本身并不明显。 因此,问题是,如何在linux上加载多个(数千个)共享库,其中包含相同的函数名? 上面的方法在windows上运行得很好,在windows中,动态加载的库数
浏览 0
提问于2013-03-01
得票数 4
回答已采纳
1
回答
是否可以在Mono中用DllImport加载ld-linux.so.2?
、
、
我需要在Linux中动态加载共享对象(以及将来的OS,但每次只加载一件东西),而实际上,试图在linux.so.2中使用DllNotFoundException总是会失败的。试图在C程序中加载它似乎也失败了(dlopen返回null)。 在没有DllImport的情况下,还有其他方法可以动态链接Mono中的库吗?
浏览 2
提问于2014-03-31
得票数 1
回答已采纳
3
回答
列出在Linux上使用C/C++执行的程序中的共享库
、
、
我想知道在Linux上执行C/C++程序时加载了哪些动态库。 例如, int main() { ... list = GetAllSharedLibraryFilePaths(); } 列表应包含: libm.so.6,librt.so.1,...或者路径: /lib/x86_64-linux-gnu/libm.so.6、/lib/x86_64-linux-gnu/librt.so.1 ... 是否有返回所有共享库文件路径的API?我知道ldd,readelf可以做到这一点,但我需要在加载共享库的可执行文件中使用C/C++编程来做到这一点。 谢谢。
浏览 7
提问于2019-12-10
得票数 2
1
回答
什么是"Windows不支持适当的动态链接?“
、
、
、
我已经阅读了Linux dlopen()和dlsym()的文档,它们分别打开动态库并在库中加载符号。 这些调用似乎相当于Windows的LoadLibrary()和GetProcAddress()。 我在这篇文章中读到"Windows不支持适当的动态链接“:。 Linux和Windows动态库调用不同的原因是什么? Linux上的动态库能够在可执行文件中加载符号,这是唯一的区别吗?但是这意味着可执行文件也是Linux上的库,因为dlopen()在动态库上运行。
浏览 2
提问于2017-02-02
得票数 0
回答已采纳
3
回答
动态加载静态库?
、
、
可以在运行时动态加载Linux中的静态libary *.a吗? 我读过 ...both静态库和共享库可以用作动态加载的库。 如何动态加载静态库?
浏览 6
提问于2010-09-02
得票数 9
回答已采纳
1
回答
动态库是在启动时加载的,还是只有在可执行文件需要时才加载?
、
、
、
、
以在Linux上运行的C应用程序为例,它与所需的共享库动态链接。 我知道.so文件应该在环境变量LD_LIBRARY_PATH中定义的路径中找到。 动态链接器是否在应用程序启动时加载此库?或者只能在需要从该库调用函数时才加载它吗?如果是后者,它如何才能真正知道哪个函数属于哪个库?
浏览 16
提问于2022-08-31
得票数 0
1
回答
当我的可执行程序在Linux上使用时,如果我更改了C++动态共享库,会发生什么?
、
、
、
、
我在Linux上有一个C++动态共享库abc.so,我的可执行程序用dlopen动态加载它,然后在使用rm + cp的情况下使用rm + cp覆盖一个新版本,但是有时也会出现coredump,但我意识到这可能与动态共享库上加载的延迟有关,但我无法确认,任何人都可以帮助我找出为什么?非常感谢!
浏览 4
提问于2019-09-19
得票数 3
回答已采纳
2
回答
C++中的崩溃恢复
、
、
、
我在Linux环境中有一个用C++编写的应用程序。应用程序在运行时动态加载库(共享对象)。(应用程序获得用户命令,它将执行逻辑来动态加载所需的共享库。) 在共享库中发生崩溃或分段故障时,是否有任何方法防止应用程序崩溃和退出? 我希望我的应用程序是活动的,并向用户报告崩溃。
浏览 3
提问于2013-12-31
得票数 4
回答已采纳
1
回答
特定于平台的库的运行时或编译时?
、
、
、
、
我正在用C++创建一个库。它针对Windows上的Windows库和Linux上的Linux库进行链接。它是抽象的,一切都很好。 然而,如果它在LLVM JIT下运行,那么动态检测、加载和使用库(以及复制头文件以供使用)是否可行,以便它可以在任何平台上使用?
浏览 4
提问于2010-10-14
得票数 1
回答已采纳
4
回答
如何快速动态加载经常重新生成的c代码?
、
我希望能够动态生成C代码,并将其快速重新加载到我正在运行的C程序中。 我用的是Linux,怎么做呢? Linux上的库.so文件可以在运行时重新编译和重新加载吗? 是否可以在不生成.so文件的情况下对其进行编译,编译后的输出是否会以某种方式进入内存,然后重新加载?我想快速重新加载编译后的代码。
浏览 0
提问于2012-09-07
得票数 9
回答已采纳
2
回答
如何从C++函数/Qt方法按需加载动态库
、
、
、
、
创建了动态库,如下所示 cat myfile.cc struct Tcl_Interp; extern "C" int My_Init(Tcl_Interp *) { return 0; } 1)简化cc文件 g++ -fPIC -c myfile.cc 2)创建共享库 g++ -static-libstdc++ -static-libgcc -shared -o libmy.so myfile.o -L/tools/linux64/qt-4.6.0/lib -lQtCore -lQtGui 3)从TCL proc加载库,然后命令 tclsh和给定的命令%加载libmy.so
浏览 3
提问于2016-09-02
得票数 2
回答已采纳
2
回答
在另一个DLL中动态加载DLL
、
、
我需要在另一个动态链接库(Visual C++ )中加载一个动态链接库,这样我就可以在第二个动态链接库中使用嵌入在第一个动态链接库中的类。我有这两个库的代码,因为我创建了两个dll,但我从来没有动态加载过库,所以我不确定这是如何完成的…… 此外,我想使这个多平台,我已经编译为.dll和.so,所以这将是一个伟大的平台无关的方法来做this...otherwise,我可以使用宏,以包括windows或linux特定的代码。 致以最良好的问候和万分感谢
浏览 4
提问于2010-11-24
得票数 2
2
回答
使用JNI加载动态C共享库,该库还加载另一个共享库
、
、
、
、
使用Java (Linux)上的JNI,我正在加载一个名为first.so的动态共享库。到目前为止一切都很顺利。问题是,first.so还加载了一个名为second.so的动态库。 在运行程序时,我会收到许多与second.so中的符号有关的“未定义符号”错误。 使用JNI加载的库似乎不能在运行时加载其他C库,因为我们是在Java环境中。我的假设正确吗?我是否需要特殊的编译标志来编译first.so库,还是需要特殊的参数来告诉eclipse它将在运行时尝试加载.so? 提前感谢!
浏览 3
提问于2014-02-07
得票数 6
2
回答
什么是链接器,什么是动态链接中的加载程序?
、
、
CSAPP (3ed)在p733中说 7.9加载可执行对象文件要运行可执行对象file prog,我们可以将其名称键入到Linux的命令行: linux> ./prog,因为prog不对应于内置的shell命令,因此shell假定prog是可执行对象file,它通过调用一些内存驻留操作系统代码(称为the加载器)为我们运行。任何Linux程序都可以通过调用execve函数来调用加载程序,我们将在8.4.6节中详细描述该函数 在p736中:动态链接 7.10动态链接到共享库之后,我们将把它链接到图7.7中的示例程序: linux> gcc -o prog2l main2.c ./libv
浏览 0
提问于2020-09-27
得票数 -1
10
回答
使用共享库与单个可执行文件
、
、
我的同事声称,我们应该将我们的C++应用程序(C++、Linux)分解成共享库,以提高代码的模块性、可测试性和重用性。 在我看来,这是一种负担,因为我们编写的代码不需要在同一台机器上的应用程序之间共享,也不需要动态加载或卸载,我们可以简单地链接一个单片可执行的应用程序。 此外,用C函数接口包装C++类会让它更难看。 我还认为单文件应用程序将更容易在客户的站点进行远程升级。 当不需要在应用程序之间共享二进制代码并且没有动态代码加载时,是否应该使用动态库?
浏览 0
提问于2009-09-16
得票数 8
回答已采纳
1
回答
是否有相当于Linux的dyld?
、
、
Mac为动态加载提供了一个有用的库,称为dyld。动态加载处理的许多有趣函数包括允许安装回调的函数,无论何时加载或卸载映像,dlopen和dlclose都将调用这些回调。这些函数分别是void _dyld_register_func_for_add_image(void (*func)(const struct mach_header* mh, intptr_t vmaddr_slide))函数和void _dyld_register_func_for_remove_image(void (*func)(const struct mach_header* mh, intptr_t vmaddr
浏览 3
提问于2013-03-29
得票数 3
1
回答
可以不使用JNI直接在Java中加载C库吗?
、
、
我是一个新的Java我的项目需要一个C的API调用在JAVA文件,我尝试与swig在Linux创建的共享库,但我面临那里的问题,任何其他方式调用在Java中的C API直接加载在任何JAVA工具,其中它匹配在Java中调用的函数地址,并返回输出如在C程序does.conclusion加载我的C动态链接库或在JAVA中的库文件,从JAVA调用的API,这些都在C lib.Direct函数地址匹配和返回。
浏览 0
提问于2014-08-07
得票数 2
1
回答
什么是cmake中的模块库类型?
、
、
cmake 文档说, 共享库是动态链接并在运行时加载的。模块库是没有链接到其他目标的插件,但可以使用类似dlopen的功能在运行时动态加载。 实际上,我可以看到SHARED和MODULE类型目标在Linux上生成.so动态库。.so库是动态链接的,在运行时加载并使用dlopen()进行映射。这两类目标有何不同?
浏览 9
提问于2017-04-18
得票数 10
1
回答
RPi交叉编译:如何链接动态库
、
、
、
我尝试交叉编译从一个x86_64窗口机器到一个Raspberry 4B运行Raspberry,我已经设法用我的工具链运行一个"hello world“。现在,我想要创建更复杂的程序,其中包括动态库,而我未能创建一个能够正确链接动态库的makefile。所需的所有库都可以在主机上和目标设备上使用。当我链接主机上的makefile时: LIBRARIES := C:/SysGCC/raspberry64/aarch64-linux-gnu/sysroot/lib/aarch64-linux-gnu/libdl.so.2 程序编译正确,但目标上的执行会产生错误:“加载共享库时出错:没有这样的
浏览 4
提问于2022-03-01
得票数 1
1
回答
如何在特定时间打印内存中的所有共享对象?
、
、
、
在Linux系统中,在特定的时间有许多进程在运行,并且每个进程都依赖于一些动态库(共享对象)。这可以通过ldd命令找到。当进程运行时,共享对象必须在内存中。同样,在Linux系统中,会有许多共享对象加载到不同运行进程的内存中。 有没有办法列出所有这些共享对象?它能用C编程语言写吗?列出当前加载到内存中的所有共享对象是否可行?
浏览 2
提问于2014-09-11
得票数 1
1
回答
一次内存中只需要一个动态库的副本?
、
、
我读过关于动态库的。我听不懂下面这句话。 对于需要多个库的程序,共享库可以减少程序的内存占用(无论是在磁盘上还是在运行时的内存中)。这是因为多个程序可以同时使用一个共享库;因此,每次内存中只需要一个库的副本。 ld-linux.so的职责是执行重新定位过程(加载动态库等)。 ld-linux.so如何知道所需的库已经加载? 程序是如何共享的? 如果库已经更新了呢?新启动的程序是加载新程序还是使用驻留在内存中的程序?
浏览 8
提问于2013-10-08
得票数 3
回答已采纳
2
回答
在python37安装程序创建exe后,在Windows7上加载Pyinstaller dll时出错
、
、
、
我用PyInstaller创建了一个exe文件,它可以在我的装有Windows8.1的个人电脑和装有Windows10的笔记本电脑上运行,但在装有Windows7的电脑上有错误 “加载python37动态链接库时出错”和一些关于动态链接库的东西。 编辑:加载Python DLL 'C:\Users\Dell\Appdata\Local|Temp|_MEI16442\python37.dll'.时出错LoadLibrary:初始化动态链接库的过程失败。它是从波兰语翻译过来的 你知道我怎么才能修好它吗?我正在读关于静态链接dll的文章,但是我不知道怎么做。我只在Windows上工作
浏览 0
提问于2020-10-29
得票数 2
1
回答
从zip、内存等加载动态库
、
、
是否有方法从zip文件、内存或自定义包文件加载动态库(so或dll)?还是我在浪费时间?关于这件事,我在网上找不到任何东西。 编辑澄清:我正在寻找一个运行时加载动态库使用LoadLibraryEx (对于dlopen )或dlopen(对于Linux)。我可以轻松地从目录加载对象,但我想知道是否有一种方法可以将共享/动态库放在ZIP文件中并从该文件中加载它。
浏览 2
提问于2014-01-17
得票数 0
回答已采纳
1
回答
``dlopen()‘通过调用动态链接器’`ld linux.so‘执行动态链接吗?
、
CSAPP说 Linux系统为动态链接器提供了一个简单的接口,允许应用程序在运行时加载和链接共享库。#包括 void *dlopen(const *filename,int标志);返回:指针来处理如果确定,如果错误为NULL dlopen()是否通过调用动态链接器ld-linux.so来执行动态链接? ld-linux.so是dlopen()调用来执行动态链接的动态链接器吗? 谢谢。
浏览 0
提问于2020-09-27
得票数 0
回答已采纳
2
回答
如何在C中查看Linux内存映射信息?
、
、
、
、
我在C中动态加载一些Linux库,我可以使用 德林佛 (见)。 然而,我找不到任何信息来获取库的大小。 我发现的唯一一件事是你必须阅读 /proc/pid/map 文件并解析它以获取相关信息(请参阅)。有没有更优雅的方法?
浏览 1
提问于2011-11-09
得票数 3
回答已采纳
1
回答
dl库的C++等效窗口
、
、
我创建了一个使用OpenSSL加密解密的应用程序。 要在g++中编译/链接它,需要包含静态库: g++ -o gssag agent_main.cpp libssl.a libcrypto.a -ldl -std=c++14 这个"dl“库似乎是一个加载LINUX所需的动态库的库。 如果使用*.a静态库,我不明白为什么需要它们。但是如果没有这个ld库,什么都不能用。 但在使用openssl和crypto *.libs的Windows中,dlopen链接编辑程序也会请求dlopen函数。 我在Windows中使用什么来替代linux dl库?
浏览 49
提问于2018-01-17
得票数 0
1
回答
从静态库linux C++中打开动态库
、
、
、
我有一个linux应用程序,它链接到静态库(.a),该库使用dlopen函数加载动态库(.so) 如果我将静态库编译为动态库并将其链接到应用程序,则dlopen将按预期的方式工作,但如果像上面所描述的那样使用它,它将不会工作。 静态库不能使用dlopen函数加载共享库吗? 谢谢。
浏览 2
提问于2013-07-25
得票数 2
回答已采纳
10
回答
如何从库函数访问c++中的argc和argv
、
、
我正在编写一个库,它将在C++中动态加载。 我想从我的代码中读取argc和argv (出于调试原因),但是我没有访问main函数的权限。有没有办法检索命令行( Windows和Linux解决方案都不错)。 谢谢,丹
浏览 0
提问于2008-10-01
得票数 9
回答已采纳
1
回答
‘`execve()’如何调用特殊的启动例程和main()函数?
、
、
当C程序由内核通过execve()执行时, 在调用主函数之前,execve()在哪里调用一个特殊的启动例程crt0? execve()在哪里调用主函数? 我在https://elixir.bootlin.com/linux/latest/source/fs/exec.c找不到他们。 通过理解linker,execve()在内部查找一个linux_binfmt对象,该对象的load_binary()可以加载可执行文件并调用其load_binary()方法来加载它,还可以加载动态链接器来加载和链接可执行文件所使用的共享库。但书中并没有说明execve()如何从可执行文件调用程序的启动例程crt0和
浏览 0
提问于2019-02-02
得票数 2
1
回答
如何在Unix上检测鼠标状况
、
、
目前我正在从事一些动态加载库插件的开发。该插件将由其他应用程序加载。编程语言是C++。 我需要检测Unix上的鼠标按键情况,比如MacOSX和Linux durning运行时。说明鼠标左键在应用程序中当前是按住还是松开。应用程序本身并不提供允许库这样做的功能。在Windows中,我使用鼠标钩子来捕获它,但是我找不到适用于Unix系统的答案。
浏览 1
提问于2012-05-02
得票数 0
回答已采纳
2
回答
在C++中使用动态加载重载库
、
、
如果我在C++中使用动态加载打开一个库,以后是否可以重新加载同一个库的更新版本?我会亲自测试它,但在我开始研究它作为我正在工作的东西的潜在解决方案之前,我很好奇它的可行性。 如果有什么不同,我在Linux上运行。能够让它在其他操作系统上工作会很好,但不是必需的。
浏览 0
提问于2013-01-17
得票数 5
回答已采纳
1
回答
真正的入口点是动态加载器中的Linux程序吗?如何在调用堆栈中显示它?
、
、
、
我认为使用共享库(不是用-static编译)的Linux程序的启动过程是: (1)在bash中输入可执行文件的名称。 (2) Bash读取可执行文件,发现它包含一个".interp“部分,其中包含动态加载程序的名称。 (3) Bash分叉一个新进程,在子进程中,执行动态加载程序,并将可执行文件的名称/路径作为参数传递给动态加载程序。但我不知道入口点是什么,在动态加载程序中没有"_start“,即/lib64 64/ld-linux-x86-64.so.2。 (4)从Linux内核返回到用户模式后,--在用户模式下执行的第一条指令--应该是动态加载程序的入口点。 (5)动态加载器
浏览 5
提问于2021-04-08
得票数 1
回答已采纳
1
回答
在libc.so.6中找不到stat方法。
、
、
、
、
使用Dart,我尝试动态加载linux/posix 'stat‘函数。 我假设函数在libc.so.6库中,但是当我试图加载它时,会得到错误: Invalid argument(s): Failed to lookup symbol (/lib/x86_64-linux-gnu/libc.so.6: undefined symbol: stat) 我正在从libc.so.6库成功地加载其他函数,所以我的动态加载技术是正确工作的。 我有两个理论: stat是xstat的宏,因此stat不再存在。 理想情况下,我希望使用stat而不是xstat,因为我需要这段代码也可以在osx上工作,据我
浏览 5
提问于2021-05-05
得票数 2
回答已采纳
1
回答
一个程序使用的多个共享库可以使用不同的静态链接libc吗?
、
、
、
、
在Windows上可以这样做(虽然不建议这样做,因为不同c库实例之间的pass标准库对象可能有问题),例如 每个可执行映像(EXE或DLL)都可以有自己的静态链接CRT,也可以动态链接到CRT。静态地包含在特定映像中或由特定映像动态加载的CRT版本取决于它所用的工具和库的版本。一个进程可以加载多个EXE和DLL映像,每个映像都有自己的CRT。 可以在Linux上完成吗? 是假的吗?但是像Linux这样的一般系统不应该有这样的限制,对吗?例如,如果代码库A和代码库B确实需要不同版本的libc才能很好地工作,并且假设它们都有非常简单的客户端C风格API (即在这些API中没有指针参数),那
浏览 5
提问于2021-04-08
得票数 0
2
回答
共享库的静态加载是否像动态加载或静态链接一样链接?
、
、
据称, 动态加载是指在进程启动后将可执行文件或库映射(或较少经常复制)到进程的内存中。动态链接是指编译后解析符号--将其名称与地址或偏移量关联起来。 因此,相应地:静态加载是指在可执行文件或libary启动之前将其映射到内存中,而静态链接是指在编译时解析符号。 现在,当您执行库的静态加载和静态链接时,库的二进制代码被追加到二进制代码中,并且对二进制代码对库的(函数和变量)引用进行了修补(不确定这是否是正确的术语),以便它们指向正确的位置。 这意味着在静态地将调用链接到函数之前 foo() 将给您(在x86 ASM中),除其他外,如下所示: call 0x00000000 在静态
浏览 0
提问于2014-04-16
得票数 3
回答已采纳
1
回答
动态链接器是否在可执行文件复制到内存后修改引用?
、
、
、
、
假设我们有以下代码: main.c extern void some_function(); int main() { some_function(); return 0; } mylib.c void some_function() { ... } 我创建了一个共享库mylib.so,并将其链接到可执行对象文件prog。 linux> gcc -shared -fpic -o mylib.so mylib.c linux> gcc -o prog main.c ./mylib.so 下面的图片是prog的可执行对象格式 通过动态链接,我们知道myli
浏览 2
提问于2020-09-03
得票数 0
回答已采纳
1
回答
在不同的.so中总是内联函数
、
、
、
、
在Linux中,如果我将动态库中的函数声明为gcc,然后动态加载该库,则该函数会被动态链接器内联吗? 我正在编译-O3中的动态库,并且没有传递任何链接时间优化标志-flto。 真正的问题是:当一个函数从另一个库中被调用时,它是否值得像往常一样在动态库中声明它呢?
浏览 9
提问于2017-07-25
得票数 1
回答已采纳
1
回答
将ELF共享库和自定义binfmt可执行文件加载到同一个Linux地址空间
、
、
、
、
我正在进行一个项目,在Linux平台上加载并运行自定义二进制格式可执行文件(在我的例子中是PE)。到目前为止,我已经成功地完成了这一工作,首先加载可执行文件,然后加载一个小型ELF共享库,该库调用可执行文件的起始地址,然后安全退出。 不过,出于几个原因,我真的不想做ELF装载。首先,我使用的共享库是在程序集中编写的(我不能使用其他任何东西,因为我没有链接到libc等等),这将是非常特定于平台的,我想从这个问题出发,使用C来编译任何平台。此外,使用Linux的本机ELF加载程序将更容易和更安全,而不是使用我自己的简化版本。 我想知道是否有一种方法可以使用我的binfmt处理程序(一个已安装的内核
浏览 8
提问于2012-10-27
得票数 3
回答已采纳
1
回答
如何在C++中创建沙箱环境?
、
、
、
有没有办法在C++中创建一个沙箱环境,你可以:-在(Linux)中运行进程加载动态库 动态库是首选,因为主进程和沙箱进程之间的通信很容易。 沙箱进程应该不能将内存放在堆上,也不能与内核/操作系统交互。取而代之的是,主进程将提供一个接口来完成这些工作。 有没有办法做到这一点?我可以创建一个脚本解释器,但那会降低很多速度。我希望保持最小的速度损失。
浏览 0
提问于2013-07-11
得票数 3
2
回答
加载共享库时未定义的符号
、
、
、
、
在我的程序中,我需要使用dlopen()动态加载共享库。程序和共享库都已成功地交叉编译为ARM体系结构,并在我的x86上安装了交叉编译器。但是,每当程序试图在ARM上运行时加载库时,它都会失败,从而导致以下错误: 未定义符号:_dl_hwcap 我找不到这个错误的罪魁祸首。 让我首先详细介绍共享库(libmyplugin.so)是如何构建在x86上的。我使用g++交叉编译器如下所示: /home/me/arm/gcc-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -march=armv7-a -mfloat-abi=hard -c -s
浏览 6
提问于2015-03-20
得票数 7
3
回答
C应用程序中的dlopen和dlclose内存管理
、
、
、
、
我使用dlopen加载一个动态库"lib1.so“,并调用一个公开的函数,比如A1,A1函数使用malloc分配100kb的动态内存,但没有释放它,在主函数中,我再次调用所有的dlclose。dlopen,调用函数A1,dlclose 我重复这个步骤10次,Purify报告这是1000KB的内存泄漏,valgrind报告间接丢失了1000KB。 你能建议100KB* 10次= 1000KB,这是真正的内存泄漏吗?当我们调用dlclose时,所有分配给动态库的内存都会被自动释放。 操作系统: Linux编程局域网:c
浏览 4
提问于2011-10-31
得票数 1
1
回答
Linux内核如何动态地使用模块?
、
、
、
理解Linux内核说 内核在管理模块时有两个关键任务要执行。第一项任务是确保内核的其余部分能够到达模块的全局符号,例如其主函数的入口点。模块还必须知道内核和其他模块中符号的地址。因此,当一个模块被链接时,引用就会被一劳永逸地解析。第二个任务包括跟踪模块的使用情况,以便在另一个模块或内核的另一部分使用模块时不会卸载模块。一个简单的引用计数跟踪每个模块的使用情况。 任何共享库都可以动态链接(使用LD_LIBRARY_PATH)和动态加载(通过dlopen()、dlsym()和dlclose()),这是正确的吗? 模块是Linux内核的共享库吗? Linux内核如何动态地使用模块?是通过动态链接(使
浏览 0
提问于2018-10-17
得票数 0
回答已采纳
1
回答
C++动态链接库和空指针
、
、
、
我的情况如下:我正在编写一个C++程序,它必须动态加载一个C++库(即通过dlopen和Linux中的朋友和LoadLibrary以及在LoadLibrary中的朋友)。这可以创建一个C接口。 现在,无论是在程序中还是在库中,我都管理一些具有指定模板成员和一些方法的对象: struct MyObject { std::vector<int> _vec; //... void do_something(); }; 现在,如果库是静态加载的,我就会编写一个库函数,如 void some_function(MyObject& o); 但是由于它是动态加载的
浏览 5
提问于2021-12-21
得票数 2
回答已采纳
1
回答
chgrp和链接库
、
、
、
根据/bin/chgrp上的linux命令,执行它的惟一必要库是libc.so。当使用gdb调试chgrp时,我注意到实际上加载了其他库,例如: /lib/x86_64-linux-gnu/libnss_compat.so.2 /lib/x86_64-linux-gnu/libnsl.so.1 /lib/x86_64-linux-gnu/libnss_nis.so.2 /lib/x86_64-linux-gnu/libnss_files.so.2 为什么这些库在ldd输出中不进行比较? 另外:它们在libc.so的动态部分没有比较,它们是如何定位和加载的?(我已经检查了libc.so的DYNA
浏览 3
提问于2015-06-29
得票数 0
回答已采纳
1
回答
什么是未定义的符号: X509_EXTENSION_free?
、
我尝试在linux上创建一个使用openssl的库。当我试图加载这个动态链接库(linux上的*.so)时,我得到了"undefined symbol: X509_EXTENSION_free“作为错误。我有点困惑这是Openssl的问题还是我的代码实现的问题。
浏览 1
提问于2012-04-25
得票数 0
回答已采纳
2
回答
Boost日志和动态加载库
、
我们在我们的应用程序中使用Boost.Log v2 (1.70),该应用程序可用于Windows和Linux。最近,我重构了一个动态加载的动态链接库,以便也使用Boost.Log。 dll导出C函数以访问专用硬件。它用于各种编程环境: C、C++、Python和Labview。(其中大多数不使用Boost.Log)。 对于Windows,构建dll的目的是只使用静态库和使用静态运行时,这使得部署变得更加容易。 这与预期的一样:两个boost日志实例似乎完全独立于彼此。该应用程序登录到它的文件接收器,dll进入另一个。 在Linux上,构建插件是为了使用共享运行时和共享boost库。我们故意这样
浏览 6
提问于2020-10-27
得票数 2
回答已采纳
1
回答
加载使用其他共享库的共享库
、
、
、
、
我是Linux新手,我正在尝试将我的库从windows迁移到Linux。它是原生二进制(mylib.so ),但它将由mono ( DllImport() )加载。我在这个库中使用了pcre (Perl兼容正则表达式)。当我的.NET可执行文件试图加载mylib.so时,它会抛出异常(找不到库)。当我设置MONO_LOG_LEVEL=debug时。我说我的库被找到了,但是pcre库没有。 我尝试过动态加载它(dlopen(), dlsym())。当我构建我的库的可执行版本时,将它与dl (-ldl)链接起来,它工作得很好。但是当我从mono加载它时,我得到了SIGSEGV。 我像这样创建这个库
浏览 5
提问于2013-07-04
得票数 2
8
回答
除了C之外,我还可以用什么语言编写C库?
、
我想要写一个可以从C代码动态加载和调用的库,但我真的不想用C编写它--代码是安全关键的,所以我想要一种更容易确信代码是正确的语言。我有什么选择? 更具体地说,我希望C程序员能够#include这个,-l那个,并开始使用我的库,就像我用C写的一样。我希望其他语言的程序员能够使用他们喜欢的工具来链接到C库。理想情况下,我希望这在所有支持C的平台上都是可能的,但我会满足于Linux、Windows和MacOS。
浏览 1
提问于2013-05-08
得票数 12
回答已采纳
1
回答
相同C++ Linux应用程序中的协议缓冲区2和3
、
、
我有一个C++ Linux应用程序,它已经使用了proto2。 现在,它还需要能够解析特定的proto3模式。 不幸的是,升级proto2模式不是一种选择,也不是降低proto3模式的级别。 我知道这个设计很难闻,但这是我必须要做的。 同时支持两者的最不痛苦的方式是什么? 我理解C++ PB库允许动态加载.proto而不是使用protoc。如果我要沿着这条路走下去,我是否也必须完全改变proto2位呢?proto2和proto3动态加载器能共存吗? 想到的另一个解决方案是在共享对象中执行proto3解析并动态链接它。 还有其他想法吗?
浏览 0
提问于2018-02-16
得票数 0
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
警惕利用Linux预加载型恶意动态链接库的后门
动态链接库DLL的加载:隐式加载和显式加载
C/C+编程笔记:C语言如何实现动态字符串?简单动态库!
C/C+编程笔记:C+静态库与动态库有何不同?本文带你弄懂!
微软 C++ 库管理器 Vcpkg 现可用于 Linux 和 MacOS
热门
标签
更多标签
云服务器
ICP备案
对象存储
实时音视频
即时通信 IM
活动推荐
运营活动
广告
关闭
领券