首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用P/Invoke获取字符串

使用P/Invoke获取字符串
EN

Stack Overflow用户
提问于 2011-11-15 02:59:24
回答 3查看 876关注 0票数 5

我有一个由两个项目组成的解决方案:一个C#控制台应用程序和一个C库。C库有一个返回HRESULT的函数。我需要以某种方式更改此函数,使其向C#代码返回一个字符串。它应该是这样的:

C#:

代码语言:javascript
复制
[DllImport("MyLib.dll", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern long MyFunction(bunch of params, [MarshalAs(UnmanagedType.BStr)] out string text);

C:

代码语言:javascript
复制
extern "C" HRESULT __declspec(dllexport) MyFunction(bunch of params, BSTR* text)
{
PWSTR finalResult;
//lots of code

(*text) = SysAllocString(finalResult);
//cleanup code
}

我可以改变这两个项目。然而,没有办法知道字符串会有多大。因此,我尝试在C库中分配字符串,但这会导致访问冲突异常和各种问题。解决这个问题的最好方法是什么?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8126662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档