Apache Celix 是一个使用 C 和 C++ 实现的 OSGi 规范的项目。提供了使用组件和面向服务编程来开发模块化应用的框架。
一个 C 版本的激活器示例:
//${WS}/myproject/bundles/hello_world/private/src/hello_world_activator.c #include <stdlib.h> #include <stdio.h> #include "dm_activator.h" struct userData { char * word; }; celix_status_t dm_create(bundle_context_pt context, void **out) { celix_status_t status = CELIX_SUCCESS; struct userData* result = calloc(1, sizeof(*result)); if (result != NULL) { result->word = "C World"; *out = result; } else { status = CELIX_START_ERROR; } return status; } celix_status_t dm_init(void* userData, bundle_context_pt context, dm_dependency_manager_pt manager) { struct userData* data = (struct userData *) userData; printf("Hello %s\n", data->word); return CELIX_SUCCESS; } celix_status_t dm_destroy(void* userData, bundle_context_pt context, dm_dependency_manager_pt manager) { free(userData); return CELIX_SUCCESS; }