繁体   English   中英

在C中动态加载结构的大小

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM