我在Visual Studio 2012中使用C#来调用包含在我的项目所需的一组外部库中的函数。该函数需要传入一个双指针,但我不确定确切的语法。单指针对我很有用。我使用的是unsafe关键字。
AVFormatContext _file = new AVFormatContext();
fixed (AVFormatContext* p_file = &_file)
{
avformat_alloc_output_context2(&p_file,null,null,filename);
}
VS正在抱怨“& p_file”语法,错误为“无法获取只读局部变量的地址”。
非常感谢任何帮助!
答案 0 :(得分:6)
您不能使用p_file
的地址,因为p_file
在固定块内是只读的。如果您可以获取其地址,那么这将是可能的:
fixed (AVFormatContext* p_file = &_file)
{
AVFormatContext** ppf = &p_file;
*ppf = null; // Just changed the contents of a read-only variable!
因此,您必须获取可以更改的内容的地址:
fixed (AVFormatContext* p_file = &_file)
{
AVFormatContext* pf = p_file;
AVFormatContext** ppf = &pf;
现在我们都很好;更改*ppf
不会更改p_file
。