如何知道特定的预处理器指令是不是在第三方 DLL 中定义?
Posted
技术标签:
【中文标题】如何知道特定的预处理器指令是不是在第三方 DLL 中定义?【英文标题】:How to know whether a particular preprocessor directive is defined in a third party DLL or not?如何知道特定的预处理器指令是否在第三方 DLL 中定义? 【发布时间】:2020-04-08 15:41:35 【问题描述】:我正在使用来自 DLL 的定义。 DLL 中有多个定义,将根据条件预处理器宏声明选择一个。如何知道DLL中使用了哪个预处理器声明?
【问题讨论】:
您所说的“从 DLL 定义”是什么意思?.. 这很模糊。如果我们谈论 DLL 导出.. 这很容易.. 如果我们谈论 #define X 10 与 #define X 11.. 它变得更加困难。请澄清。 【参考方案1】:预处理器指令和宏仅在编译时存在。除了可能在调试信息中,已编译的二进制文件(例如 DLL)通常不包含有关预处理器指令或宏的任何信息。
【讨论】:
【参考方案2】:感谢您的回复。 如果正在使用的DLL的源文件如下:
文件1
#ifdef x 结构 A 诠释一个; 浮动 b; ;
其他
struct A int a; ;
endif
在用户代码中,结构 A 正在被实例化。有什么方法可以让我们知道正在使用 DLL 中的哪个结构定义? DLL 提供程序没有关于如何构建 DLL 的源代码和其他信息。
【讨论】:
请不要将您的回复作为答案发布。相反,您可以发表评论编辑问题。【参考方案3】:不确定问题陈述,但如果您想要反编译器,则几乎没有 ILSpy、DotPeek 等选择。
【讨论】:
以上是关于如何知道特定的预处理器指令是不是在第三方 DLL 中定义?的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 吐出 .lib 而不是 .dll
如何检查我的 C# 应用程序是不是使用来自 nuget 包的正确平台特定 dll?
C# 如何判断DllImport()所引用的dll文件是不是存在 我有两个dll文件名 只有一个文件名在特定的系统中存在