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)

Most upvoted comments

@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.