【发布时间】:2016-12-28 18:24:38
【问题描述】:
对不起,如果我重复其他问题,但我不知道如何用谷歌搜索它。 我想为我的程序添加一些小的模块化:一些 .cpp 文件应该编译为“模块”。主要要求是我应该能够通过将新的 .cpp 文件添加到项目中来添加模块,而无需以任何方式更改其他文件。
使用动态加载库实现这一点看起来很容易。主程序可以扫描某个文件夹中的所有 .dll 文件,加载每个文件并从每个模块调用导出的“加载”符号。在析构函数中,主程序可以调用“卸载”符号,以便模块可以清理。
我想要同样的,但使用单片程序。 .cpp 文件有什么方法可以注册自己,以便主程序可以在某个时候调用它们的 init() 函数?或者让主程序找到所有这些模块?
它在Linux内核中是如何完成的?我知道简单的添加 .c 文件可以让它们以某种方式工作。
【问题讨论】:
-
你可以静态链接一切吗?
-
从我的跟踪来看,.cpp 文件无法将自身添加到 main,所有 .cpp 文件都需要附加某种形式的头文件...您可以查看:tutorialspoint.com/cplusplus/cpp_inheritance.htm举个例子……
-
"所有的.cpp文件都需要附加某种形式的头文件"主程序可以暴露一个注册接口。
-
“在 Linux 内核中是如何完成的?我知道简单的添加 .c 文件可以让它们以某种方式工作。” 内核模块需要编译为模块才能添加它.这些内核模块需要提供特定的接口才能使其正常工作。
-
@πάνταῥεῖ "如果添加了新的内核模块,需要重新编译内核" 是吗?
modprobe呢?
标签: c++ modularity