0

是否可以创建操作系统可以加载并作为可执行文件运行但也可以动态链接的单个二进制文件?

这对于客户端和服务器可以驻留在同一可执行文件(甚至可能共享代码)的应用程序之间的资源共享非常有用。

我对 Linux 和 Windows 都感兴趣

4

3 回答 3

3

至少在 Windows 上这是不支持的。您加载模块,LoadLibrary并且不能将可执行文件传递给LoadLibrary该模块并随后从该模块执行代码。文档说:

LoadLibrary 也可用于加载其他可执行模块。例如,该函数可以指定一个 .exe 文件来获取可以在 FindResource 或 LoadResource 中使用的句柄。但是,不要使用 LoadLibrary 运行 .exe 文件。而是使用 CreateProcess 函数。

实现所需的最简单方法如下:

  • 将应用程序的所有代码放入 DLL。
  • 从该 DLL 导出您需要的任何功能。
  • 还可以导出一个main函数,或者WinMain如果这是一个 GUI 子系统应用程序。
  • 创建一个简单的可执行程序,该程序链接到您的 DLL 并将其主要功能委托给 DLL 导出的功能。
于 2013-10-31T11:14:13.093 回答
0

您可以使用 exe 导出库中的符号链接并将另一个项目(例如 DLL 项目)链接到该库。然后,您可以从 exe 本身动态加载 DLL,一切正常。我不确定是否可以使用它,否则就像使用LoadLibrary

拉兹万。

于 2013-10-31T11:14:56.560 回答
0

看这里,它至少可以在 windows 下回答你的问题。 http://sandsprite.com/CodeStuff/Using_an_exe_as_a_dll.html

于 2013-10-31T11:11:34.607 回答