是否可以创建操作系统可以作为可执行文件加载和运行但也可以动态链接的单个二进制文件?
这对于客户端和服务器可以驻留在同一个可执行文件(甚至可能共享代码)中的应用程序之间的资源共享很有用。
我对 Linux 和 Windows 都很感兴趣
最佳答案
至少在 Windows 上这是不支持的。您使用 LoadLibrary
加载模块,您不能将可执行文件传递给 LoadLibrary
并随后从该模块执行代码。 documentation说:
LoadLibrary can also be used to load other executable modules. For example, the function can specify an .exe file to get a handle that can be used in FindResource or LoadResource. However, do not use LoadLibrary to run an .exe file. Instead, use the CreateProcess function.
实现所需内容的最简单方法如下:
- 将应用程序的所有代码放入一个 DLL 中。
- 从该 DLL 中导出您需要的任何函数。
- 同时导出一个
main
函数,或者如果这是一个 GUI 子系统应用程序,则可能导出WinMain
。 - 创建一个简单的可执行程序,链接到您的 DLL 并将其主要功能委托(delegate)给 DLL 导出的功能。
关于c++ - 同一二进制文件中的可执行文件和 DLL/共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19704725/