Fix passing C# string to C++ (#1055)

This commit is contained in:
Fangjun Kuang
2024-06-25 10:52:59 +08:00
committed by GitHub
parent a3bac19c54
commit 5cce159cf3
16 changed files with 46 additions and 29 deletions

View File

@@ -1,6 +1,7 @@
/// Copyright (c) 2024.5 by 东风破
using System;
using System.Runtime.InteropServices;
using System.Text;
namespace SherpaOnnx
{
@@ -14,7 +15,8 @@ namespace SherpaOnnx
public bool SaveToWaveFile(String filename)
{
Impl impl = (Impl)Marshal.PtrToStructure(Handle, typeof(Impl));
int status = SherpaOnnxWriteWave(impl.Samples, impl.NumSamples, impl.SampleRate, filename);
byte[] utf8Filename = Encoding.UTF8.GetBytes(filename);
int status = SherpaOnnxWriteWave(impl.Samples, impl.NumSamples, impl.SampleRate, utf8Filename);
return status == 1;
}
@@ -84,6 +86,6 @@ namespace SherpaOnnx
private static extern void SherpaOnnxDestroyOfflineTtsGeneratedAudio(IntPtr handle);
[DllImport(Dll.Filename)]
private static extern int SherpaOnnxWriteWave(IntPtr samples, int n, int sample_rate, [MarshalAs(UnmanagedType.LPStr)] string filename);
private static extern int SherpaOnnxWriteWave(IntPtr samples, int n, int sample_rate, [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.I1)] byte[] utf8Filename);
}
}