c++ - 同一二进制文件中的可执行文件和 DLL/共享库

标签 c++ linux windows operating-system

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

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

我对 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/

相关文章:

C++模板制作具有不同常量的多个版本的函数

c++ - 使用 C++ Builder 实现 Active Directory

c++ - 在没有歧义的情况下是否允许通过引用重载函数?

linux - Crontab 作业输出到文件

c++ - Protocol Buffer - 生成非内联访问器

c++ - 同时从不同线程写入套接字时会发生什么?

c++ - 在这种情况下如何使用二维 vector ?

linux - 从管道查找结果中检索最后修改的文件

linux - 设计一个 Linux 字符设备驱动程序,以便多个进程可以读取

windows - 批处理文件不会以管理员身份运行