C++ 可执行依赖项中是否缺少仅包含DLL\u进程\u附件中代码的DLL?
我有一个基于DLL注入的项目,我希望在本地进行测试。在目标环境中,DLL是通过AppInit_DLL加载的,这意味着它几乎是在第一次执行进程时加载user32.DLL的同时加载的。所有这些工作,DLL创建一个日志文件证明成功 我现在希望在受控环境中测试DLL的行为,特别是在我在Visual Studio 2015中创建的测试win32程序的上下文中。我从DLL项目中获取生成的lib文件,并将其作为附加依赖项添加到项目设置->链接器->输入下,将包含该lib文件的目录添加到VC++目录->库目录,并将DLL文件放置在生成的可执行文件旁边。但是,当我运行可执行文件时,我看不到我的日志文件 我决定使用dependency walker进行进一步的研究,但我没有看到任何关于我的DLL的提及,因此似乎从未添加过依赖项 一些补充资料:C++ 可执行依赖项中是否缺少仅包含DLL\u进程\u附件中代码的DLL?,c++,winapi,visual-c++,dll,dll-injection,C++,Winapi,Visual C++,Dll,Dll Injection,我有一个基于DLL注入的项目,我希望在本地进行测试。在目标环境中,DLL是通过AppInit_DLL加载的,这意味着它几乎是在第一次执行进程时加载user32.DLL的同时加载的。所有这些工作,DLL创建一个日志文件证明成功 我现在希望在受控环境中测试DLL的行为,特别是在我在Visual Studio 2015中创建的测试win32程序的上下文中。我从DLL项目中获取生成的lib文件,并将其作为附加依赖项添加到项目设置->链接器->输入下,将包含该lib文件的目录添加到VC++目录->库目录,
- 两者都是使用相同的目标体系结构构建的
- win32测试应用程序是使用/MDd(多线程调试DLL)构建的
- 测试应用程序不使用从DLL导出的任何函数,因为我所要测试的是在DLL\u PROCESS\u ATTACH中执行的代码是否正确
任何帮助都将不胜感激。谢谢:-)RbMm的回答是正确的。问题是DLL没有被链接,因为它没有被使用。添加一个导出的方法并在测试程序中调用它就成功了。在dll中添加任何导出的函数,然后在exe中导入该函数。将dll的库按库顺序放在第一位。这会给你(但不是确切地)一个例子:链接器对.lib文件进行依赖性分析,那些不需要的文件不会被链接。对于导入库和静态库均为True。众所周知,自注册(依赖于全局对象的构造函数)不适用于.lib文件。你的情况很相似,成功!谢谢,回想起来,它将被优化是非常有意义的。“我想测试的是,在DLL\u PROCESS\u ATTACH中执行的代码做了正确的事情”-对于大多数实际用途,该代码不应该做任何事情(请参阅)。此外,问题标题没有描述问题,一半的问题文本是多余的背景故事,与问题无关。稍微大修一下不会有什么坏处。我知道DLL\u进程\u附件的最佳实践。我用它来钩住低级函数。此外,我需要帮助的问题不是找出代码是否正确,而是为什么没有加载DLL。此外,我确信,正是这些背景故事为RbMb提供了快速评估和回答问题所需的信息。