Fix string marshalling on Windows

This commit is contained in:
Jeremy Pritts committed 2023-12-09 03:10:54 -05:00
1 parent 92ddd55a44
commit 970c846e38
12 files changed
+847 -617

No files matched your search

@@ -8,7 +8,7 @@
</PropertyGroup>
<ItemGroup Label="Package References">
<PackageReference Include="CppSharp" Version="1.0.1" />
<PackageReference Include="CppSharp" Version="1.1.5.3168" />
</ItemGroup>
</Project>
@@ -6,20 +6,32 @@ using CppSharp;
using CppSharp.AST;
using CppSharp.Generators;
using CppSharp.Passes;
using System.IO;
namespace NativeFileDialogs.CppSharpGenerator;
public class NativeFileDialogsLibrary : ILibrary
{
private const string lib_name = "NativeFileDialogs";
private const string include_directory = "./include";
public void Setup(Driver driver)
{
Directory.CreateDirectory(include_directory);
string fileText = File.ReadAllText(@"../nativefiledialog-extended/src/include/nfd.h")
.Replace("const nfdnfilteritem_t* filterList,", "const nfdnfilteritem_t filterList[],")
.Replace("const nfdu8filteritem_t* filterList,", "const nfdu8filteritem_t filterList[],");
//These replacements are necessary because CppSharp incorrectly generates the former as an object reference.
File.WriteAllText(include_directory + "/nfd.h", fileText);
DriverOptions options = driver.Options;
options.GeneratorKind = GeneratorKind.CSharp;
options.OutputDir = $"../{lib_name}.AutoGen";
options.UseSpan = true;
var module = options.AddModule("nfd");
module.IncludeDirs.Add(@"../nativefiledialog-extended/src/include");
module.IncludeDirs.Add(include_directory);
module.Headers.Add("nfd.h");
module.OutputNamespace = $"{lib_name}.AutoGen";
}