[英]Dynamically loading the size of a structure in C
我有一个名为Point.c的文件,该文件的结构定义为:
Point
此外,它还具有名为point_str,point_deserialize的函数。
现在,有类似的文件,例如
LinkedList.c, Node.c etc with similar definitions.
现在,我使用dlopen在另一个文件中动态调用这些函数。
因此,如果发现类型为Point,我将创建一个字符串:
point_str
并通过使用dlopen提供.so文件的路径来调用该函数。
但是,我无法动态知道结构的大小。 有办法吗? 我想做类似的事情
int size = givemesize("Point", "path_to_so");
就像dlopen一样,但是要知道结构的大小。
编辑:为什么我想知道大小?
有了这个大小,我就反序列化了从字符串到实际类型的所有内容。 这就是为什么我需要尺寸。 因此,从命令行开始反序列化Point对象。 因此,使用该字符串,我想知道位于Point.c中并具有libpoint.so的Point对象的实际大小。
你不能。
.so不会知道结构的大小,除非您使用.so可用的函数对其进行编码(如Jonathan在评论中所述)。 所有这些信息在编译时都会被丢弃。 在编译期间会计算所有相关的指针/内存偏移,并且会丢弃用于计算这些偏移的信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.