草庐IT

DLL_EXPORT

全部标签

c++ - 使用 DLL 函数是否有任何性能命中?

如题所说,与普通函数相比,调用dll函数有perfhit吗?该dll将由dlopen加载。编辑:忽略dlsym时间,因为我每个函数只执行一次。 最佳答案 对DLL函数的调用是通过地址间接调用的,编译器无法内联它们,因此性能会受到轻微影响。只有在性能关键的内部循环中以及在分析它们之后使用它们时,您才应该担心。 关于c++-使用DLL函数是否有任何性能命中?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com

c++ - Windows 上的 DLL Main 对比。 __attribute__((constructor)) Linux 上的入口点

考虑代码执行文件:intmain(){printf("ExecutableMain,loadinglibrary\n");#ifdefHAVE_WINDOWSHMODULElib=LoadLibraryA("testdll.dll");#elifdefined(HAVE_LINUX)void*lib=dlopen("testdll.so",RTLD_LAZY);#endifif(lib){printf("ExecutableMain,Freeinglibrary\n");#ifdefHAVE_WINDOWSFreeLibrary(lib);#elifdefined(HAVE_LINUX

linux - 访问未通过 EXPORT_SYMBOL* 导出的 Linux 内核符号

我们需要访问net/ipv4/af_inet.c中的内核全局变量,这些变量未从可加载内核模块中显式导出。我们目前使用的是2.6.18内核。kallsyms_lookup_name似乎不再可用(未导出)__symbol_get返回NULL(进一步阅读后,symbol_get/__symbol_get会查看内核和仅包含导出符号的现有模块的符号表,并确保导出符号的模块实际已加载)有没有办法访问不是从内核模块导出的符号?经过大量阅读和查看人们提供的答案后,似乎很难在许多内核版本中找到一种方法,因为kAPI随着时间的推移发生了显着变化。 最佳答案

linux - bash: export: `-Xmx512m' : 当我设置 MAVEN_OPTS 变量时不是有效标识符

我在使用OpenSuse,我在关注thistutorialtosetupMaven.当我运行这个时:exportMAVEN_OPTS=-Xms256m-Xmx512m我收到以下错误:bash:export:`-Xmx512m':notavalididentifier我已经按照那个教程的步骤操作了,我下载的Maven是版本3.5.2。 最佳答案 您需要在值周围加上引号,因为它包含一个空格。exportMAVEN_OPTS="-Xms256m-Xmx512m" 关于linux-bash:ex

python - 使用 wine 从 python ctypes 调用标准 windows .dll 时出现段错误

我正在尝试在Linux上运行的Python脚本中调用Kernel32.dll中的一些函数。正如JohannesWeiß指出的那样HowtocallWinedllfrompythononLinux?我正在通过ctypes.cdll.LoadLibrary()加载kernel32.dll.so库,它加载正常。我可以看到kernel32已加载,甚至内部有GetLastError()函数。但是,每当我尝试调用该函数时,我都会遇到段错误。importctypeskernel32=ctypes.cdll.LoadLibrary('/usr/lib/i386-linux-gnu/wine/kerne

java - Linux 系统上的 Windows DLL

我想知道您是否可以在应用程序(使用任何编程语言)中加载Windows操作系统的DLL(例如,user32.dll)Linux操作系统。DLL将位于Linux文件系统的目录中。感谢您的帮助。您好! 最佳答案 是的,您可以加载一个DLL并使用适当的包装器库调用它的函数,但如果DLL本身对不存在的平台有依赖性,那从根本上说是没有用的。这种方法用于闭源视频编解码器之类的东西,其中不存在(非平凡的)依赖项。User32.dll当然是操作系统的一部分,并且与许多NT内核函数有着内在的联系,而这些函数在Linux中都不存在。Wine不使用Wind

windows - 用于检查 Windows DLL 的 Linux 工具

我必须调试WindowsDLL的问题,但我只运行Linux,所以我想知道是否有(最好是命令行)工具来检查Linux下的WindowsDLL。我正在寻找的主要是导出符号的列表。 最佳答案 使用“winedump-jexportfile.dll”winedump是Wine的一部分首页:https://www.winehq.org/docs/winedump 关于windows-用于检查WindowsDLL的Linux工具,我们在StackOverflow上找到一个类似的问题:

python - 如何在 Linux 上从 python 调用 Wine dll?

我正在Linux中编写一个python脚本,并且需要调用一些在Wine中可用的Windows函数。具体来说,AllocateAndInitializeSid和LookupAccountSidW,以确定谁登录了远程Windows计算机。这些功能是advapi32.dllinWine的一部分(编辑:使用答案,我能够调用该函数,但LookupAccountSidW只能在本地计算机上运行)。我如何访问这些函数,或者一般的Winedll?我试过了>>>cdll.LoadLibrary("~/.wine/drive_c/windows/system32/advapi32.dll")但它会导致错误:

c++ - 多次加载 DLL?

我正在使用LoadLibrary在Windows中加载DLL的函数。我的问题是:如果我为同一个DLL多次调用此方法,我会获得DLL不同实例的句柄,还是它们都引用同一个实例?此外,此行为与LinuxSO文件有何关联,是相同还是完全不同,在这方面我可以做出哪些假设?谢谢。 最佳答案 MSDN文档指出:Thesystemmaintainsaper-processreferencecountonallloadedmodules.CallingLoadLibraryincrementsthereferencecount.CallingtheF

c++ - 如何使用导出函数交叉编译 DLL

我正在完成DLL劫持练习,并编写了一个DLL,它在VisualStudio中编译时按预期工作。本质上,当加载DLL时,它会执行shell命令并将合法功能(在本例中为CheckEvenOdd和PrintAMessage函数)传递给最初预期的DLL(在这个例子,GetEvenOdd.dll)。工作代码如下;#include"stdafx.h"#include#pragmacomment(linker,"/export:CheckEvenOdd=GetEvenOdd.dll.original.CheckEvenOdd")#pragmacomment(linker,"/export:Print