簡體   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