CppSharp: CppSharp.Types.Std.String.CSharpMarshalToNative fails with "Sequence contains no matching element" exception
I’m trying to wrap the Microsoft/CNTK library under Windows using VS2017. CppSharp throws exception during code generation.
Version: v0.8.14 NuGet package
Code
var options = driver.Options;
options.GeneratorKind = GeneratorKind.CSharp;
var module = options.AddModule("CntkLibrary");
module.IncludeDirs.Add(@"d:\CNTK\Source\Math\");
module.IncludeDirs.Add(@"d:\CNTK\Source\Common\Include\");
module.IncludeDirs.Add(@"d:\CNTK\Source\ComputationNetworkLib\");
module.IncludeDirs.Add(@"d:\CNTK\Source\CNTKv2LibraryDll\");
module.IncludeDirs.Add(@"d:\CNTK\Source\CNTKv2LibraryDll\API\");
module.IncludeDirs.Add(@"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\");
driver.ParserOptions.SetupMSVC(VisualStudioVersion.VS2017);
module.IncludeDirs.Add(@"C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\shared\");
module.IncludeDirs.Add(@"C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\um\");
module.IncludeDirs.Add(@"C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt\");
driver.ParserOptions.EnableRTTI = true;
driver.ParserOptions.AddArguments("-fexceptions");
driver.ParserOptions.AddArguments("-fcxx-exceptions");
module.Headers.Add(@"CNTKLibrary.h");
module.Headers.Add(@"PrimitiveOpType.h");
Stack trace
System.InvalidOperationException occurred
HResult=0x80131509
Message=Sequence contains no matching element
Source=System.Core
StackTrace:
at System.Linq.Enumerable.First[TSource](IEnumerable`1 source, Func`2 predicate)
at CppSharp.Types.Std.String.CSharpMarshalToNative(CSharpMarshalContext ctx)
at CppSharp.Generators.CSharp.CSharpMarshalManagedToNativePrinter.VisitType(Type type, TypeQualifiers quals)
at CppSharp.AST.AstVisitor.VisitTemplateSpecializationType(TemplateSpecializationType template, TypeQualifiers quals)
at CppSharp.AST.TemplateSpecializationType.Visit[T](ITypeVisitor`1 visitor, TypeQualifiers quals)
at CppSharp.Generators.CSharp.CSharpMarshalManagedToNativePrinter.VisitTypedefType(TypedefType typedef, TypeQualifiers quals)
at CppSharp.AST.TypedefType.Visit[T](ITypeVisitor`1 visitor, TypeQualifiers quals)
at CppSharp.AST.AstVisitor.VisitParameterDecl(Parameter parameter)
at CppSharp.AST.Parameter.Visit[T](IDeclVisitor`1 visitor)
at CppSharp.Generators.CSharp.CSharpSources.GenerateFieldSetter(Field field, Class class)
at CppSharp.Generators.CSharp.CSharpSourcesExtensions.GenerateField(CSharpSources gen, Class class, Field field, Action`2 generate, Boolean isVoid)
at CppSharp.Generators.CSharp.CSharpSources.GeneratePropertySetter[T](T decl, Class class, Boolean isAbstract, Property property)
at CppSharp.Generators.CSharp.CSharpSources.GenerateProperties(Class class)
at CppSharp.Generators.CSharp.CSharpSources.GenerateClassProperties(Class class)
at CppSharp.Generators.CSharp.CSharpSources.VisitClassDecl(Class class)
at CppSharp.AST.Class.Visit[T](IDeclVisitor`1 visitor)
at CppSharp.Generators.CSharp.CSharpSources.VisitDeclContext(DeclarationContext context)
at CppSharp.Generators.CodeGenerator.VisitNamespace(Namespace namespace)
at CppSharp.Generators.CSharp.CSharpSources.VisitNamespace(Namespace namespace)
at CppSharp.AST.Namespace.Visit[T](IDeclVisitor`1 visitor)
at CppSharp.Generators.CSharp.CSharpSources.VisitDeclContext(DeclarationContext context)
at CppSharp.Generators.CodeGenerator.VisitTranslationUnit(TranslationUnit unit)
at CppSharp.AST.TranslationUnit.Visit[T](IDeclVisitor`1 visitor)
at CppSharp.Generators.CSharp.CSharpSources.Process()
at CppSharp.Generators.Generator.GenerateSingleTemplate(ICollection`1 outputs)
at CppSharp.Generators.Generator.Generate()
at CppSharp.Driver.GenerateCode()
at CppSharp.ConsoleDriver.Run(ILibrary library)
at Test.CppSharp.Program.Main(String[] args) in A:\_All\My.Personal.My Documents\Visual Studio 2017\Projects\Test.CppSharp\Test.CppSharp\Program.cs:line 55
About this issue
- Original URL
- State: open
- Created 7 years ago
- Comments: 16 (6 by maintainers)
@ispysoftware I am sorry for your trouble. Usually we ask users to help with fixes but in this case the fix has been added in weeks and I just haven’t released it which is my fault. I am going to update the NuGet tomorrow.