Browse Source

P/Invoked OS X frameworks instead of just libs when applicable.

pull/642/head
Dimitar Dobrev 10 years ago
parent
commit
6fd6649bb5
  1. 17
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs

17
src/Generator/Generators/CSharp/CSharpTextTemplate.cs

@ -2991,7 +2991,8 @@ namespace CppSharp.Generators.CSharp @@ -2991,7 +2991,8 @@ namespace CppSharp.Generators.CSharp
if (library != null)
libName = Path.GetFileNameWithoutExtension(library.FileName);
}
if (Options.StripLibPrefix && libName != null && libName.Length > 3 && libName.StartsWith("lib"))
if (Options.StripLibPrefix && libName != null && libName.Length > 3 &&
libName.StartsWith("lib", StringComparison.Ordinal))
{
libName = libName.Substring(3);
}
@ -3001,6 +3002,20 @@ namespace CppSharp.Generators.CSharp @@ -3001,6 +3002,20 @@ namespace CppSharp.Generators.CSharp
if (Options.GenerateInternalImports)
libName = "__Internal";
if (Platform.IsMacOS)
{
var framework = libName + ".framework";
for (uint i = 0; i < Driver.Options.LibraryDirsCount; i++)
{
var libDir = Driver.Options.getLibraryDirs(i);
if (Path.GetFileName(libDir) == framework && File.Exists(Path.Combine(libDir, libName)))
{
libName = string.Format("@executable_path/../Frameworks/{0}/{1}", framework, libName);
break;
}
}
}
Write("[DllImport(\"{0}\", ", libName);
var callConv = function.CallingConvention.ToInteropCallConv();

Loading…
Cancel
Save