Browse Source

Fixed the auto-compilation not to use an old and buggy CS compiler on Windows.

Fixes https://github.com/mono/CppSharp/issues/688.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/696/head
Dimitar Dobrev 9 years ago
parent
commit
6cbd047392
  1. 17
      src/Core/Toolchains/ManagedToolchain.cs
  2. 3
      src/Generator/Driver.cs

17
src/Core/Toolchains/MonoToolchain.cs → src/Core/Toolchains/ManagedToolchain.cs

@ -5,19 +5,19 @@ using System.Linq;
namespace CppSharp namespace CppSharp
{ {
public static class MonoToolchain public static class ManagedToolchain
{ {
public static string FindMonoPath() public static string FindMonoPath()
{ {
if (Platform.IsWindows) if (Platform.IsWindows)
return @"C:\\Program Files (x86)\\Mono"; return @"C:\\Program Files (x86)\\Mono\bin";
else if (Platform.IsMacOS) else if (Platform.IsMacOS)
return "/Library/Frameworks/Mono.framework/Versions/Current"; return "/Library/Frameworks/Mono.framework/Versions/Current/bin";
throw new NotImplementedException(); throw new NotImplementedException();
} }
public static string FindCSharpCompilerPath() public static string FindCSharpCompilerDir()
{ {
if (Platform.IsWindows) if (Platform.IsWindows)
{ {
@ -27,10 +27,15 @@ namespace CppSharp
var sdk = versions.Last(); var sdk = versions.Last();
return Path.Combine(sdk.Directory, "csc.exe"); return sdk.Directory;
} }
return Path.Combine(FindMonoPath(), "bin", "mcs.exe"); return FindMonoPath();
}
public static string FindCSharpCompilerPath()
{
return Path.Combine(FindCSharpCompilerDir(), Platform.IsWindows ? "csc.exe" : "mcs");
} }
} }
} }

3
src/Generator/Driver.cs

@ -428,7 +428,8 @@ namespace CppSharp
Diagnostics.Message("Compiling {0}...", module.LibraryName); Diagnostics.Message("Compiling {0}...", module.LibraryName);
CompilerResults compilerResults; CompilerResults compilerResults;
using (var codeProvider = new CSharpCodeProvider( using (var codeProvider = new CSharpCodeProvider(
new Dictionary<string, string> { { "CompilerVersion", "v4.0" } })) new Dictionary<string, string> {
{ "CompilerDirectoryPath", ManagedToolchain.FindCSharpCompilerDir() } }))
{ {
compilerResults = codeProvider.CompileAssemblyFromFile( compilerResults = codeProvider.CompileAssemblyFromFile(
compilerParameters, module.CodeFiles.ToArray()); compilerParameters, module.CodeFiles.ToArray());

Loading…
Cancel
Save