我们正在开发C#
(.NET Core)应用程序。并且我们需要从外部库调用C
方法。
但是,在整理某些类型:thread_t
和lock_t
时遇到麻烦。
请在此处查看C
的定义:
EXPORT void strsvrinit (strsvr_t *svr, int nout);
typedef struct { /* stream server type */
int state; /* server state (0:stop,1:running) */
...
thread_t thread; /* server thread */
lock_t lock; /* lock flag */
} strsvr_t;
#ifdef WIN32
#define thread_t HANDLE
#define lock_t CRITICAL_SECTION
#else
#define thread_t pthread_t
#define lock_t pthread_mutex_t
#endif
我们如何实现thread_t(HANDLE)和lock_t(CRITICAL_SECTION)类型的封送处理?
感谢您的帮助。
[仅使用IntPtr
引用它们如何?我假设您不会从C#代码中修改这些结构,甚至不会尝试将它们按值传递给C代码(不好的主意),而是将其指针传递给P / Invoked函数。
因此只需将它们引用为IntPtr
,基本上等同于void*