我是C的新人,对于我缺乏知识感到抱歉(我的C-book非常庞大:)
我想扩展一个带有封闭源的共享库(libcustomer.so),但是公知的api。
这样的事情可能吗?
我认为它不会那样工作(名称被编译成.so,不是吗?)。 但是替代方案是什么?
对于#4:是否有一般的方法来做到这一点,或者我是否必须编写一个名为旧的方法并转发呼叫(如何?)?
因为原始的libcustomer.so(= liboldcustomer.so)可能会不时发生变化,所有这些东西都应该动态地工作。
出于安全考虑,我们的系统没有LD_PRELOAD(否则我会接受:()。
考虑扩展验证检查&一些更好的NPE处理。
提前感谢您的帮助!
编辑:
我正在实施我的扩展程序,如答案所示,但目前我还有一个未处理的案例:
如何从扩展库“代理”结构?
例如我有这个:
customer.h:
struct customer;
customer.c:
struct customer {
int children:1;
int age;
struct house *house_config;
};
现在,在我的customer-extension.c中,我正在编写customer.c的所有公共方法,但是如何“传递”结构?
非常感谢你的时间和帮助!