C# 如何包装C库参数?(创建x264.Net包装器)

C# 如何包装C库参数?(创建x264.Net包装器),c#,.net,wrapper,x264,libx264,C#,.net,Wrapper,X264,Libx264,因此,在dll中,我们有x264参数\u tstructure\object和一个用于设置x264参数\u应用\u配置文件的函数。在C中,我们使用 x264_param_t param; x264_param_default_preset(&param, "veryfast", "zerolatency"); param.i_threads = 1; param.i_width = width; param.i_height = height; param.i_fps_num = fps

因此,在dll中,我们有
x264参数\u t
structure\object和一个用于设置
x264参数\u应用\u配置文件的函数。在C中,我们使用

x264_param_t param;
x264_param_default_preset(&param, "veryfast", "zerolatency");
param.i_threads = 1;
param.i_width = width;
param.i_height = height;
param.i_fps_num = fps;
param.i_fps_den = 1;
// Intra refres:
param.i_keyint_max = fps;
param.b_intra_refresh = 1;
//Rate control:
param.rc.i_rc_method = X264_RC_CRF;
param.rc.f_rf_constant = 25;
param.rc.f_rf_constant_max = 35;
//For streaming:
param.b_repeat_headers = 1;
param.b_annexb = 1;
x264_param_apply_profile(&param, "baseline");
我想创建这样的包装。。事情所以我有libx264.dll和VisualStudio2010 pro

如何为它创建.Net C#包装器

我是p\Invoke的初学者,所以我没有得到很多

我想要实现的是逐帧处理x264。。。到现在为止,我只需要编码部分。。。在C中实现它所需的所有示例代码都在中。所以我只需要为上面提到的东西写一个包装器。。。所以我在问-如何在参数和设置thap param的函数上创建包装器。我很想看看如何从c#调用包装器。因此,如果您能提供任何代码支持,我很高兴看到它

与其自己尝试这个(以及无数其他代码),我可以建议您尝试一下吗?它是在C#中开发的,支持所有X264,可以在您的C#或其他.NET项目中使用。不需要包装,他们已经为你做了这些


虽然使用C#调用C库函数并不十分困难,但如果您确实希望自己完成这项工作,我建议您看一看,它为您提供了许多示例,让您能够自己完成这项工作。

令人惊讶的是,这些年来,似乎没有人为libx264构建和共享哪怕是最简单的.NET包装器。因此,我最近构建了一个我称之为“x264net”的应用程序,并将其放在github上,如下所示:


此时包装器非常简单,这使它成为如何从.NET语言访问C库的一个很好的示例。我没有使用P/Invoke,因为我发现很难使用它。相反,我使用了一种称为“C++/CLI”的语言来创建互操作性层。C++是一种基于C++的语言,它可以访问本地C/C++库,而本身可以通过.NET代码访问。因此,它就像P/Invoke一样,在托管代码和本机代码之间架起了桥梁。

对不起,我看不到libx264 dll甚至x264 exe的包装器。您能提供一个指向存储库中此类文件的链接吗?据我所知,MeGUI并没有直接调用libx264.dll。它直接调用可执行文件。是的,我需要的是逐帧处理x264。。。我只需要编码部分。。。所有在C中实现它所需的示例代码都在中,所以我只需要为这里提到的东西编写一个包装器。。。所以我在问-如何在参数和设置thap param的函数上创建包装器。我很想看看如何从c#调用包装器。因此,如果您能提供任何代码支持,我很高兴看到它。