python - 确定一个 dll 是在调试中构建的还是使用 python 发布的

标签 python c++ dll visual-studio-2005

有什么方法可以确定在 MS Visual Studio 2005 (C++) 中构建的 dll 是在调试中编译还是在发布时使用 python 编译?

我知道 VS 能够加载 dll 并向您显示一些元数据存储此信息的 list 。任何 python 模块也能做到这一点吗?

另一种选择是确定此 dll 对其他 dll 的依赖性并查找仅调试的依赖性,例如:msvcr80D.dll,如果可能的话。

最佳答案

Pefile可以帮你解析PE可执行。你可以找到一些用法 examples在项目页面上。

关于你问题的第二部分,你可以做这样的事情来检索 dll 的依赖项列表(取自示例):

import pefile

path_to_dll = r"path_to_your_dll"
pe =  pefile.PE(path_to_dll, fast_load=True)

# If the PE file was loaded using the fast_load=True argument, we will need to parse the data directories:
pe.parse_data_directories()
for entry in pe.DIRECTORY_ENTRY_IMPORT:
    print entry.dll

在我的例子中,我得到了以下输出: KERNEL32.dll, MSVCP80D.dll, MSVCR80D.dll, ADVAPI32.dll.

关于python - 确定一个 dll 是在调试中构建的还是使用 python 发布的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35695558/

相关文章:

python - "python3 unattended upgrade shutdown"是什么进程?

c++ - 我应该把这个枚举放在哪里?

c++ - std::allocate_shared,允许从自定义分配器和单次分配中分配共享指针引用计数

c++ - 如果加载到应用程序,DLL 中的函数地址是否可以更改?

c# - 引用 dll 而不复制它们 C#

python - 删除 pandas 数据框中的字符串

python - pyodbc (4.0.23) 从 Python3 连接到 MySQL 时出错

python - 未找到 cherrypy/dev/urandom(或等效项)——错误

c++ - Linux虚拟机上的离屏渲染

dll - 为什么我的 NuGet 包只能与特定版本的第三方库一起使用?