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++函数是否需要修改
...全文
263 6 打赏 收藏 举报
写回复
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++ 的怎么写,而不是光看个函数声明,这里把指针和内存分配都改了
  • 打赏
  • 举报
回复
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2021-04-07 12:31
社区公告

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