Итак, решил написать сюда. Я подключаю компилятор к проекту http://olymp.krsu.edu.kg, так как очень много запросов на него. Но есть проблема:
Loading core…
Unhandled Exception: System.TypeInitializationException: The type initializer for ‘PascalABCCompiler.Compiler’ threw an exception. —> System.ArgumentNullException: Value cannot be null. Parameter name: path1 at System.IO.Path.Combine(String path1, String path2) at PascalABCCompiler.Compiler.get_standart_assembly_path(String name) at PascalABCCompiler.Compiler…cctor() — End of inner exception stack trace — at PascalABCCompiler.Compiler…ctor(SourceFilesProviderDelegate SourceFilesProvider, ChangeCompilerStateEventDelegate ChangeCompilerState) at PascalABCCompiler.ConsoleCompiler.Reset() at PascalABCCompiler.ConsoleCompiler.Main(String[] initialArgs)
Эта ошибка выдается, если пытаться запустить компилятор из Windows командой: CreateProcessAsUser(user, nullptr, buf1, nullptr, nullptr, true, CREATE_UNICODE_ENVIRONMENT|BELOW_NORMAL_PRIORITY_CLASS, env, path.c_str(), &startup, &info);
Вот что в командной строке: “…\Judge\Langs\pascalABC\pabcnetc.exe” “…\Judge\Running\000265158PHQGH_temp0000\Solution.pas” Solution exe /noconsole
Причем если запустить командную строку из под этого пользователя и выполнить команду к ней, то все хорошо. Не работает именно CreateProcessAsUser (ну или можно попробовать смоделировать с помощью runas и напрямую выполнить то, что должно выполняться).
Я уже смотрел исходники PascalABC.NET на github, но понять причину так и не смог - почему этот параметр не доходит до командной строки?
Версия консольного компилятора последняя с сайта - 3.5.1.2290
Что с этим можно сделать? С остальными языками проблем нет.