这是我第一次尝试为 C 库创建 C# 包装器。SDK 是第 3 方,不受我控制:
sdk_defines.h
#ifndef SDK_CHAR_T
#define SDK_CHAR_T
typedef char sdk_char_t;
#endif /* SDK_CHAR_T */
#ifndef SDK_CSTR_T
#define SDK_CSTR_T
typedef const sdk_char_t* sdk_cstr_t;
#endif /* SDK_CSTR_T */
sdk.h
sdk_cstr_t SDK_API
sdk_get_version(void);
我的 C# 包装器:
[DllImport("sdk.dll", CharSet = CharSet.Ansi)]
private static extern string sdk_get_version();
对 sdk_get_version 的任何调用都会导致崩溃,没有例外。我感觉它是返回类型,但是如何在 C# 中正确编组它?