Tag: c#

有没有librtmp c#.net包装器?

有没有librtmp c#.net包装器?

c lang中的加密。 和c#中的解密

我在我的服务器端代码中使用了Rijndael(加密算法),这是用C语言编写的。 但我的客户端是用C#编写的,C#提供了自己的Rijndael类来加密和解密。 在客户端,我使用相同的密码进行密钥生成,但客户端应用程序无法对其进行解密。 我想用C加密文件并用.NET(C#)解密该文件。 服务器代码: http : //www.efgh.com/software/rijndael.txt 客户代码: public static void Encrypt() { string password = @”4c696e6775614e6578742431302a4c6f63616c697a6174696f6e2a3949505f3030372a”; // Your Key Here /*UnicodeEncoding UE = new UnicodeEncoding(); byte[] key = UE.GetBytes(password);*/ Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes (password, new byte[] { 0x26, 0xdc, 0xff, 0x00, 0xad, 0xed, 0x7a, 0xee, 0xc5, 0xfe, 0x07, 0xaf, 0x4d, 0x08, 0x22, […]

C#中的WinDivert

我想在C#代码中调用5个WinDivert函数,第一reflection:PInvoke这里是签名: internal enum WINDIVERT_LAYER { WINDIVERT_LAYER_NETWORK = 0, /* Network layer. */ WINDIVERT_LAYER_NETWORK_FORWARD = 1 /* Network layer (forwarded packets) */ } internal const UInt64 WINDIVERT_FLAG_SNIFF = 1; /* * typedef struct { UINT32 IfIdx; UINT32 SubIfIdx; UINT8 Direction; } WINDIVERT_ADDRESS, *PWINDIVERT_ADDRESS; * */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] internal struct WINDIVERT_ADDRESS { UInt32 IfIdx; UInt32 […]

如何在C#String和C Char指针之间进行转换

我有一个用C编写的大型库,我想在C#程序中用作DLL。 大多数C代码将由库自己的函数使用,但我确实需要一个函数才能从C#项目中调用。 所以下面有一个C函数示例 __declspec(dllexport) char* test(char* a){ char* b = “World”; char* result = malloc(strlen(a) + strlen(b) + 1); strcpy(result, a); strcpy(result, b); return result; } 现在在C#代码中我using System.Running.InteropServices; 还有[DllImport(“mydll.dll”)]但我不确定如何声明该function。 public static extern char* test(char* a); 显然不起作用,因为C#不支持像C这样的指针。 那么我应该如何将一个字符串传递给这个C函数并让它返回一个字符串呢?

Marshal是一个双char指针返回值

我正在使用的AC库有一个函数,它返回一个指向char指针数组的指针: extern char** getIds(); 使用示例: char **list, **list_save; list_save = list = getIds(); while (list && *list) { printf(“Id: %s\n”, *list); list++; } freeIds(list_save); 其中freeIds也来自C库,并释放在getIds期间分配的内存。 它们也提供.Net Interop程序集,但它不会导入getIds函数。 我可以访问interop汇编源代码。 我的程序是在C#中,所以我想知道是否可以在interop程序集中添加一个导入,它应该是什么样的,以及我的C#代码调用该函数的样子。 我对dll导入的猜测是: [DllImport(“foo.dll”, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)] public static extern IntPtr getIds(); 但是我无法让C#调用它,因此我不知道dll导入是否正确。

通过控制台将二进制数据从C传递到C#

我有两个应用程序,一个用C语言编写,另一个用C#编写,它通过控制台字符串消息进行通信。 它们都等到另一个发送字符串消息。 现在我希望在某个时刻,C应用程序通过相同的控制台I / O“通道”以二进制格式发送图像,并且C#应用程序接收它并将其用作要显示的图像。 我知道这是可能的,请参阅: C / C ++:是否可以通过控制台传递二进制数据? 。 我可以访问这两个应用程序的源代码。 我知道C应用程序代码将映像写入磁盘的位置。 C#应用程序通过以下代码获取C应用程序输出: process.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived); //void p_OutputDataReceived(object sender, DataReceivedEventArgs e) //e.Data. 如何编写二进制图像传输的C和C#部分? 谢谢。

如何传递可以从本机写入c#的空字符串缓冲区?

我正在尝试从托管代码中获取一个字符串到我的非托管代码中: unmanaged dll: typedef int (__stdcall * GetNameFromDictionaryCallback)(ULONGLONG id, WCHAR * name); declspec(dllexport) void __stdcall UnmanagedSetNameLookupCallback(GetNameFromDictionaryCallback fn) { GetNameFromDictionaryCallback GetNameFromDictionary = fn; WCHAR * value = new WCHAR[256]; ULONGLONG key = 0x250000000DA44785; GetNameFromDictionary(key, value); // reverse P/Invoke call to C# function wprintf_s(“%ls”, value); // just to display the result for simplicity delete value; } 托管dll: […]

从C#传递字符串数组到c编程

我从C#.Net托管代码调用非托管C编程代码。 但我无法将字符串数组作为参数传递给C中的.Net函数: dllmain(const int argc, const char *argv[]){} 请帮助我,我如何从C Sharp.Net调用此function 谢谢。

C#中的封送C数组

可能重复: 在c#中编组c结构 实际C结构: typedef struct procedure { char code[8]; }procedure; typedef struct p45_cldxed24 { procedure p45_cldxed[8]; }p45_cldxed24; p45_cldxed24的等效C#结构是什么? 具体来说,你将如何编组arrays? 检查一下 它是否正确? [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] struct p45_cldxed24 { [MarshalAsAttribute(UnmanagedType.LPArray, ArraySubType=UnmanagedType.Struct,SizeConst = 8,SizeParamIndex=0)] procedure[] p45_cldxed; }

为包含void *参数的函数创建SWIG C#包装器

我正在尝试为包含函数的C .lib创建一个C#包装器,使用SWIG获取一个void指针。 int inputPointExample(void* input); int outputPointerExample(void* output); 默认情况下,SWIG不处理void指针转换,您必须以某种方式使用类型映射。 我找到了这个页面 – > http://www.nickdarnell.com/2011/05/swig-and-a-miss/ Number 9表示使用以下类型映射来处理void指针… %typemap(ctype) void * “void *” %typemap(imtype) void * “IntPtr” %typemap(cstype) void * “IntPtr” %typemap(csin) void * “$csinput” %typemap(in) void * %{ $1 = $input; %} %typemap(out) void * %{ $result = $1; %} %typemap(csout) void * { return $imcall; } […]