2012-01-27 64 views
1

是否有可能将一个本地(C++)DLL作为可执行文件加载? 优先直接从内存中创建硬盘驱动器或类似的EXE?作为一个exe启动一个DLL

+0

你为什么要这么做 – rerun 2012-01-27 20:54:45

+0

你想在这里做什么? – ChrisF 2012-01-27 20:55:22

+0

我正在用C++编写调试器,它只能调试它自己的类型。 x64只能调试x64和x86 - 只能x86。我不是每个平台都提供2个独立的exe文件,而是考虑检查调试对象需要哪个版本,然后“创建”它的处理exe文件。 – Idov 2012-01-27 20:58:17

回答

2

查找rundll32.exe。但是你最好确切知道你在做什么。老实说,我不确定。

0

您可以使用LoadLibrary WinAPI调用来加载DLL。

3

具体来说,这是什么意思?例如,它将在DLL中使用什么入口点?

这实际上工作的唯一方法是如果DLL是专门编写的允许它。如果是这种情况,那么它不完全清楚为什么你不会首先创建一个可执行文件而不是DLL。

典型情况是RunDLL32.exe存根。它旨在执行DLL with a specific signature作为入口点的功能。如果DLL没有专门设计符合这个签名,那么things don't go well。如果您需要需要这样的功能,您可能需要考虑匹配RunDLL32.exe所需的函数签名并使用它来“执行”您的DLL。

+0

我正在写这个DLL,所以它会被写入以允许它。我需要处理x64和x86平台,但我不想提供2个版本(我在做什么 - 在我的问题的评论中解释):) – Idov 2012-01-27 21:01:38

+0

@Idov:标准模式是提供2个版本。如果它是一个调试器,它是为开发人员编写的。我认为他们可以理解x86和x64平台之间的差异,并成功地处理两种不同的可执行文件。你正在使这种方式比它所需要的更复杂。 – 2012-01-27 21:04:37

4

Microsoft提供的Rundll32.exe可用于执行已明确编码以支持此用法的DLL函数。