使用非托管导出将字符串从 C# 返回到 C++ 返回数字

js.hrt

我在 C# 中有一个函数,我使用Unmanaged Exports从 C++ 调用它传递的字符串在 C# 中被正确接收,但在 C++ 中返回的字符串显示为类似 5073480 的数字。这里可能有什么问题?我需要在 C++ 中取回字符串。以下是代码

C++代码:

using Testing = wchar_t*(__stdcall *) (wchar_t* name);
int _tmain(int argc, _TCHAR* argv[])
{
    HMODULE mod = LoadLibraryA("CSharp.dll");
    Testing performTest = reinterpret_cast<Testing>(GetProcAddress(mod, "testing"));
    wchar_t* d_str = L"JS";
    wchar_t* result = performTest(d_str);
    std::printf("Result from c#: %d\n", result);
    getchar();
    return 0;
}

C#代码:

[DllExport(ExportName = "testing", CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.LPWStr)]
public static string PassStringInOut([MarshalAs(UnmanagedType.LPWStr)]string name)
{
    Console.WriteLine("Received string is: "+name);
    return string.Format("Hello from .NET assembly, {0}!", name);
}
很快

这里有几个问题。

格式字符串错误。要使用 printf 的 ASCII 版本打印 Unicode 字符串,指定的格式为%S(注意大写S)。

其次,您在这里引入了内存泄漏。在 C++ 中使用完字符串后,您必须通过调用CoTaskMemFree 来释放内存(假设您正在为 Windows 编写代码)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从C#DLL中使用非托管导出返回字符串到Inno Setup脚本

来自分类Dev

导出托管的C#函数以将更改的char *参数返回到非托管代码

来自分类Dev

使用CTypes和Foreign将字符串从C库返回到OCaml

来自分类Dev

使用CTypes和Foreign将字符串从C库返回到OCaml

来自分类Dev

如何将类从C ++代码返回到C#

来自分类Dev

将结构数组从c返回到c#

来自分类Dev

将int数组从C ++ .dll返回到C#

来自分类Dev

MEX:如何将矩阵从C ++ / C返回到MATLAB

来自分类Dev

将GET请求的响应从C ++返回到QML字符串

来自分类Dev

将字符串数组从 C++ DLL 返回到 VBA(Excel)

来自分类Dev

OpenVMS(VAX)Fortran函数将字符*(*)返回到C

来自分类Dev

使用ctypes将malloc的数组从C返回到Python

来自分类Dev

使用BOOST.python从C ++将结构返回到Python

来自分类Dev

使用BOOST.python从C ++将结构返回到Python

来自分类Dev

C ++将结果从多个线程返回到数组

来自分类Dev

将数据从C#返回到jQuery UI自动完成

来自分类Dev

Rcpp:将C数组作为NumericMatrix返回到R

来自分类Dev

将值从C ++程序返回到bash脚本

来自分类Dev

C#Linq查询将类型返回到字典

来自分类Dev

将数组地址从函数返回到指针(C ++)

来自分类Dev

将char数组从C ++函数返回到tcl

来自分类Dev

将数组从C#COM库返回到VBA

来自分类Dev

C:如何将多个值从函数返回到main

来自分类Dev

将多个值返回到C中的线程时出错

来自分类Dev

将Applescript Shell输出返回到目标C

来自分类Dev

将多个值从Shell脚本返回到C程序

来自分类Dev

将数组地址从函数返回到指针(C ++)

来自分类Dev

将XML从Oracle Procedure返回到C#Restful服务

来自分类Dev

从C#/。NET将数据表返回到R

Related 相关文章

热门标签

归档