Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用C结构时如何在C#中获取内存位置_C#_Ffmpeg_Libavcodec - Fatal编程技术网

在使用C结构时如何在C#中获取内存位置

在使用C结构时如何在C#中获取内存位置,c#,ffmpeg,libavcodec,C#,Ffmpeg,Libavcodec,我正在使用C#从IP摄像机录制视频,我正在使用libavcodec57library。因此,如果我需要写入或读取结构的任何属性,我需要在C#中使用封送类,比如 在上面的中,In_codecctx是IntPtr类型,它指向C中的AVCodecContext结构。因此其中有许多属性,如宽度,高度等,要读取,我需要使用上面的代码行,为此我必须知道该属性在内存中的地址,它是结构的基址加上该属性的偏移量。我知道基址,但知道如何找到任何属性的实际偏移量 一种方法是,我需要在C#中创建相同的结构,该结构在li

我正在使用C#从IP摄像机录制视频,我正在使用
libavcodec57
library。因此,如果我需要写入或读取结构的任何属性,我需要在C#中使用
封送
类,比如

在上面的
中,In_codecctx
是IntPtr类型,它指向C中的
AVCodecContext
结构。因此其中有许多属性,如
宽度
高度
等,要读取,我需要使用上面的代码行,为此我必须知道该属性在内存中的地址,它是结构的基址加上该属性的偏移量。我知道基址,但知道如何找到任何属性的实际偏移量

一种方法是,我需要在C#中创建相同的结构,该结构在
libavcodec
库中定义,并使用下面的代码,这将为我提供与C#中定义的结构的宽度偏移

但这需要很大的努力,仍然不准确,因为它给了我一些错误的值


[评论更新]


是我需要使用的结构,有没有办法确定宽度和高度的偏移量,如果有,如何确定?

我想说的是,C和C的结构中可以有不同的填充。这个链接是我需要使用的结构,是否有任何方法来确定宽度和高度的偏移,如果有,如何确定?
int width = Marshal.ReadInt32(in_codecctx, 40);
Marshal.OffsetOf(typeof(AVCodec.AVCodecContext),"width")