草庐IT

如何查看.dll文件函数接口?(DLL动态链接库)(查看动态链接库、查看接口、查看函数)(Visual Studio的dumpbin工具)(Dependency Walker)

文章目录方法DependencyWalkerVisualStudio的dumpbin工具注意事项使用VisualStudio的dumpbin工具查看DLL(动态链接库)方法查看DLL(动态链接库)文件的接口,通常需要使用一些专门的工具。这里有两个比较常见的方法:DependencyWalker使用DependencyWalker:DependencyWalker是一个免费的实用工具,可以列出DLL文件中的所有导出函数以及它们可能依赖的其他DLL。只需在DependencyWalker中打开想查看的DLL文件即可。VisualStudio的dumpbin工具使用dumpbin工具:如果安装了Vi

windows - 获取 DLL 的目录

我有一个关于在Windows系统上获取DLL目录的问题。情况是这样的:我有一个DLL和一个EXE文件。exe文件必须加载DLL才能运行。这两个模块位于不同的目录中。此外,DLL的目录是可变的。现在我必须在“运行时”中获取DLL的目录。我该怎么做?提前致谢。 最佳答案 您是否需要找到DLL加载它的位置或找到它加载的路径?DLL路径搜索算法为documented在MSDN上,您可以使用SearchPath搜索系统路径的功能。如果您需要查找加载DLL的路径,加载后,使用GetModuleFileName功能。它采用由LoadLibrary

c++ - 线程的创建,CRT和DLL的是怎么实现的?

所以我明白CreateThread和CRT会导致内存泄漏,信号不起作用,应该使用_beginthread或_beginthreadex函数。在编写应用程序时这一切都很好,但是那些为其他应用程序编写dll等的人呢(无论是普通的cdll、com对象、插件等)。无法保证调用DLL的线程是如何创建的,即使他们使用__beginthread(ex)也很有可能打赌他们有不同的CRT实现\版本。那么程序员应该做什么呢?不会用CRT?生成一个内部线程并将所有工作卸载到该线程(不将CRT与调用线程一起使用)?使用DllMain和附加/分离的一些技巧来正确设置和关闭所有线程,无论它们是如何创建的?

c - 如何使用 LoadLibrary() 和 GetProcAddress() 函数将 ntdll.dll 添加到项目库中?

我想用NtQueryInformationThread获取线程的起始地址,但我需要添加它的库。我该怎么做? 最佳答案 我更喜欢将ntdll.lib(您可以在WindowsDDK/WDK中找到它)添加到项目中。在这种情况下,您不需要GetProcAddress东西。 关于c-如何使用LoadLibrary()和GetProcAddress()函数将ntdll.dll添加到项目库中?,我们在StackOverflow上找到一个类似的问题: https://stac

windows - 为什么 Win32::ODBC 在 Perl 5.10 和 Cygwin 下找不到 ODBC.dll?

我正在尝试使用PerlODBC连接到MicrosoftSQL服务器。我的问题是Perl5.10.0在使用Win32ODBC驱动程序时遇到问题。如果我运行Perlshell并执行这一行,我会收到错误。useWin32::ODBC;Can'tload'/usr/lib/perl5/vendor_perl/5.10/i686-cygwin/auto/Win32/ODBC/ODBC.dll'formoduleWin32::ODBC:Nosuchfileordirectoryat/usr/lib/perl5/5.10/i686-cygwin/DynaLoader.pmline201.我已验证dl

python - 在 Win32 上将临时 DLL 加载到 Python

我在各种Python代码库中看到的在运行时动态生成/加载C函数的常见习惯用法是:importtempfileimportshutilfromctypesimportCDLLworkdir=tempfile.mkdtemp()try:#Generateandwritecodeinworkdir#...#Compileandlinkintoan.so/.dylib/.dll#...lib=CDLL(path_to_lib)finally:shutil.rmtree(workdir)虽然这似乎在*nix系统上工作得很好,但我不确定它在Win32上的工作情况。这是因为,根据我的经验,当临时目录

.net - 如何从 PowerShell 1.0 调用 DLL 方法

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭9年前。Improvethisquestion我正在使用PowerShell1.0版脚本从DLL文件调用方法,并使用以下代码将DLL文件加载到PowerShell。[System.Reflection.Assembly]::LoadFile("pathofdll")isloadedsuccessfullyGACVersionLocation------------------Falsev2.0.50727locationofdll该类包含一个

c++ - 是否有可能在 Windows 上防止其他应用程序 Hook 系统 DLL

我正在拼命寻找我的基于Qt的应用程序崩溃的原因。经过一些观察我发现,即使没有选择任何文件,仅打开QFileDialog(标准的Windows文件对话框)也会导致应用程序在几分钟后崩溃。它不会发生在所有机器上。我已经在dependencywalker中打开了我的应用程序,分析显示,打开文件对话框会加载大量DLL,我的应用程序中不需要它们——所有挂接在windowsshell中的工具。其中-TortoiseSVN,它甚至依赖于卡住。是否有可能在应用程序上下文中阻止加载其他DLL,例如编解码器或shell-hooks?是否至少可以创建一个QFileDialog而无需加载所有与WindowsH

c++ - C++ DLL 中全局变量的范围是什么

假设第3方DLLX有一个全局变量G我编写了两个单独的DLL(作为应用程序的插件)P1和P2,它们都动态加载X。应用程序的进程加载了我的两个插件P1和P2,所以它们是同时加载的。这是否意味着我有一个或两个G实例?编辑:使用场景是X是一个3D渲染引擎,它具有单例包装系统资源,它的设计根本不是为了在一个进程中期望多个实例-你可以运行2X的应用程序,但尝试在同一个应用程序中两次初始化X将会搞砸。这些插件都使用X但会作为单独的安装程序进行部署,它们不彼此了解并且不会共享相同的X。dll文件-通常每个插件都有自己的目录来存储所需的资源和DLL。 最佳答案

windows - 记录进程加载的 DLL

我想将日志记录添加到我们的单元测试中,以记录它们使用的DLL以及它们从何处加载。我可以从SysinternalsListDLLs获得我需要的信息,但我需要在测试过程运行时运行它,并且我最终会遇到竞争条件:例如,ListDLLs可能运行得太早,而错过在测试运行中途加载的DLL;或ListDLL可能运行得太晚,在测试进程退出后。同样,我可以从VisualStudio调试器的输出和模块窗口中获取我需要的信息,但我想在我们的构建服务器上自动执行此操作。是否有任何命令行工具可以运行任意EXE,跟踪它使用的DLL,并将信息记录到文件中? 最佳答案