这是我第一次尝试创建一个C库封装到C库。该SDK是第三方,我的控制范围之外:调用一个C DLL函数来编组一个字符串从一个类型定义的字符
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#中编组?
如果在[DllImport]和私有静态外部...之间添加[return:MarshalAs(UnmanagedType.LPStr)],它会工作吗? – bas 2013-02-17 21:07:59
SDK_API是如何定义的? – 2013-02-17 21:15:55
删除了我的答案,去戴维斯解决方案。我不完全确定,大卫似乎是:)。 – bas 2013-02-17 21:21:23