c#调用c++函数时的类型转换问题

悠然的二货 2021-04-07 12:31:54
c++中函数部分实现
bool WINAPI test(uchar * outData,char * outResult)
{
std::string strResult =“xxxxx"
outResult = (char *)CoTaskMemAlloc(strResult.size() + 1);
strResult.copy(outResult, strResult.size(), 0);
*(outResult + strResult.size()) = '\0';
}
c#里该怎么去调用这个函数才能获取到outResult里的字符串,我尝试过用IntPtr和StringBuilder都不行。或者说c++函数是否需要修改
...全文
306 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hwangt0 2021-04-10
  • 打赏
  • 举报
回复
IntPtr和StringBuilder是可以的,[DllImport("xxx.dll", CallingConvention = CallingConvention.Cdecl],换换CallingConvention的值试试
stherix 2021-04-09
  • 打赏
  • 举报
回复
显然 你这么写的函数 就算是c++来调用, 也是获取不了你所谓的outResult里的字符串的
兔子-顾问 2021-04-07
  • 打赏
  • 举报
回复
c++函数声明要加上标志 extern "C" bool WINAPI test(uchar * outData,char * outResult)
enaking 2021-04-07
  • 打赏
  • 举报
回复
楼上正解!!!
wanghui0380 2021-04-07
  • 打赏
  • 举报
回复
https://blog.csdn.net/Koupoo/article/details/7844887 这里是对应说明
wanghui0380 2021-04-07
  • 打赏
  • 举报
回复
ref intptr 看看,不行在另外想办法 还是以前帖子的话,怎么调用取决于C++ 的怎么写,而不是光看个函数声明,这里把指针和内存分配都改了

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧