C产品在市场上有哪些独特优势?

2026-04-29 02:443阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计485个文字,预计阅读时间需要2分钟。

C产品在市场上有哪些独特优势?

我在DLL中有一个小程序库,需要调用它的某些方法。它使用指针和一些结构体,但整体上非常简单。问题是,我对.NET与非托管世界的交互不是很理解,这阻止了我进行测试。目前存在内存问题。

我在DLL中有一个小C库,我需要调用它的一些方法.

它使用指针和一些结构,但在其他方面非常简单.问题是我对.NET与非托管世界的互操作并不是非常了解,到目前为止我的尝试仍然存在内存访问冲突异常(可能是因为我没有得到指针非常正确).

有没有人能给我一些指针(哦,一个双关语!)以最好的方式来解决这个问题?

谢谢

extern vconfig_t *Pobsopen(Ppoly_t ** obstacles, int n_obstacles); extern int Pobspath(vconfig_t * config, Ppoint_t p0, int poly0, Ppoint_t p1, int poly1, Ppolyline_t * output_route); extern void Pobsclose(vconfig_t * config); struct vconfig_t { int Npoly; int N; Ppoint_t *P; int *start; int *next; int *prev; }; typedef struct Ppoly_t { Ppoint_t *ps; int pn; } Ppoly_t; typedef Ppoly_t Ppolyline_t; typedef struct Pxy_t { double x, y; } Pxy_t; typedef struct Pxy_t Ppoint_t; typedef struct Pxy_t Pvector_t; 您应该查看本MSDN杂志 article中提供的 tool,它可以将C片段转换为C#P / Invoke签名,当然还有帖子.

为您的代码段运行该工具可以为您提供:

[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] public struct vconfig_t { /// int public int Npoly; /// int public int N; /// Ppoint_t* public System.IntPtr P; /// int* public System.IntPtr start; /// int* public System.IntPtr next; /// int* public System.IntPtr prev; } [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] public struct Ppoly_t { /// Ppoint_t* public System.IntPtr ps; /// int public int pn; } [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] public struct Pxy_t { /// double public double x; /// double public double y; } public partial class NativeMethods { /// Return Type: vconfig_t* ///obstacles: Ppoly_t** ///n_obstacles: int [System.Runtime.InteropServices.DllImportAttribute("<Unknown>", EntryPoint="Pobsopen")] public static extern System.IntPtr Pobsopen(ref System.IntPtr obstacles, int n_obstacles) ; /// Return Type: int ///config: vconfig_t* ///p0: Ppoint_t->Pxy_t ///poly0: int ///p1: Ppoint_t->Pxy_t ///poly1: int ///output_route: Ppolyline_t* [System.Runtime.InteropServices.DllImportAttribute("<Unknown>", EntryPoint="Pobspath")] public static extern int Pobspath(ref vconfig_t config, Pxy_t p0, int poly0, Pxy_t p1, int poly1, ref Ppoly_t output_route) ; /// Return Type: void ///config: vconfig_t* [System.Runtime.InteropServices.DllImportAttribute("<Unknown>", EntryPoint="Pobsclose")] public static extern void Pobsclose(ref vconfig_t config) ; }

C产品在市场上有哪些独特优势?

本文共计485个文字,预计阅读时间需要2分钟。

C产品在市场上有哪些独特优势?

我在DLL中有一个小程序库,需要调用它的某些方法。它使用指针和一些结构体,但整体上非常简单。问题是,我对.NET与非托管世界的交互不是很理解,这阻止了我进行测试。目前存在内存问题。

我在DLL中有一个小C库,我需要调用它的一些方法.

它使用指针和一些结构,但在其他方面非常简单.问题是我对.NET与非托管世界的互操作并不是非常了解,到目前为止我的尝试仍然存在内存访问冲突异常(可能是因为我没有得到指针非常正确).

有没有人能给我一些指针(哦,一个双关语!)以最好的方式来解决这个问题?

谢谢

extern vconfig_t *Pobsopen(Ppoly_t ** obstacles, int n_obstacles); extern int Pobspath(vconfig_t * config, Ppoint_t p0, int poly0, Ppoint_t p1, int poly1, Ppolyline_t * output_route); extern void Pobsclose(vconfig_t * config); struct vconfig_t { int Npoly; int N; Ppoint_t *P; int *start; int *next; int *prev; }; typedef struct Ppoly_t { Ppoint_t *ps; int pn; } Ppoly_t; typedef Ppoly_t Ppolyline_t; typedef struct Pxy_t { double x, y; } Pxy_t; typedef struct Pxy_t Ppoint_t; typedef struct Pxy_t Pvector_t; 您应该查看本MSDN杂志 article中提供的 tool,它可以将C片段转换为C#P / Invoke签名,当然还有帖子.

为您的代码段运行该工具可以为您提供:

[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] public struct vconfig_t { /// int public int Npoly; /// int public int N; /// Ppoint_t* public System.IntPtr P; /// int* public System.IntPtr start; /// int* public System.IntPtr next; /// int* public System.IntPtr prev; } [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] public struct Ppoly_t { /// Ppoint_t* public System.IntPtr ps; /// int public int pn; } [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] public struct Pxy_t { /// double public double x; /// double public double y; } public partial class NativeMethods { /// Return Type: vconfig_t* ///obstacles: Ppoly_t** ///n_obstacles: int [System.Runtime.InteropServices.DllImportAttribute("<Unknown>", EntryPoint="Pobsopen")] public static extern System.IntPtr Pobsopen(ref System.IntPtr obstacles, int n_obstacles) ; /// Return Type: int ///config: vconfig_t* ///p0: Ppoint_t->Pxy_t ///poly0: int ///p1: Ppoint_t->Pxy_t ///poly1: int ///output_route: Ppolyline_t* [System.Runtime.InteropServices.DllImportAttribute("<Unknown>", EntryPoint="Pobspath")] public static extern int Pobspath(ref vconfig_t config, Pxy_t p0, int poly0, Pxy_t p1, int poly1, ref Ppoly_t output_route) ; /// Return Type: void ///config: vconfig_t* [System.Runtime.InteropServices.DllImportAttribute("<Unknown>", EntryPoint="Pobsclose")] public static extern void Pobsclose(ref vconfig_t config) ; }

C产品在市场上有哪些独特优势?