12#include "arcane/utils/PlatformUtils.h"
13#include "arcane/utils/String.h"
14#include "arcane/utils/CommandLineArguments.h"
15#include "arcane/utils/FatalErrorException.h"
16#include "arcane/utils/Exception.h"
17#include "arcane/utils/CheckedConvert.h"
18#include "arcane/core/Directory.h"
33#include <coreclr_delegates.h>
38using string_t = std::basic_string<char_t>;
64 size_t slen = wcslen(x);
80#define MAX_PATH PATH_MAX
125 bool m_has_valid_lib_handle =
false;
138#define PRINT_FORMAT(level,str,...) \
139 if (dotnet_verbose>=level)\
140 std::cout << String::format("[coreclr] " str "\n",__VA_ARGS__);
144#if defined(ARCANE_DOTNET_ROOT)
170 params.size =
sizeof(params);
175 if (
rc != 0 ||
cxt ==
nullptr) {
176 auto flags = std::cerr.flags();
177 std::cerr <<
"Init failed: " << std::hex << std::showbase <<
rc << std::endl;
178 std::cerr.setf(flags);
187 std::cerr <<
"Get delegate failed: " << std::hex << std::showbase <<
rc << std::endl;
203 int argc = *(
cmd_args.commandLineArgc());
209 std::cerr <<
"ENTERING _execDirect root_path=" <<
root_path <<
"\n";
213 params.size =
sizeof(params);
224 std::cerr <<
"_execDirect init_command_line R = " <<
rc <<
"\n";
235 std::cerr <<
"Launching '.Net'\n";
237 std::cerr <<
"End '.Net': R=" <<
r <<
"\n";
255 String verbose_str = Arcane::platform::getEnvironmentVariable(
"ARCANE_DEBUG_DOTNET");
279 PRINT_FORMAT(1,
"ENTERING CORECLR_MAIN root_path={0}",
root_path);
320 ARCANE_FATAL(
"load_assembly_and_get_function_pointer: rc={0}",
rc);
322 ARCANE_FATAL(
"Failure: load_assembly_and_get_function_pointer()");
332 lib_args args{ STR(
"from host!"), 0 };
341extern "C" ARCANE_EXPORT
int
350 ret = arcanePrintArcaneException(
ex,
nullptr);
352 catch(
const std::exception&
ex){
353 ret = arcanePrintStdException(
ex,
nullptr);
356 ret = arcanePrintAnyException(
nullptr);
409 PRINT_FORMAT(1,
"get_export name={0} f={1}",name,f);
411 PRINT_FORMAT(0,
"Can not get library symbol '{0}' error='{1}'",name,
dlerror());
443 PRINT_FORMAT(1,
"Return value of 'get_hostfxr_path' = '{0}'",
rc);
445 PRINT_FORMAT(0,
"Error or warning calling 'get_hostfxr_path' = '{0}'",
rc);
453 lib_info.m_has_valid_lib_handle =
true;
470 if (m_has_valid_lib_handle){
474 m_has_valid_lib_handle =
false;
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Arguments de la ligne de commande.
Classe gérant un répertoire.
virtual String file(const String &file_name) const
Retourne le chemin complet du fichier file_name dans le répertoire.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
constexpr const_pointer data() const noexcept
Pointeur sur la mémoire allouée.
Classe de base d'une exception.
Vue sur une chaîne de caractères UTF-8.
Chaîne de caractères unicode.
ByteConstArrayView utf8() const
Retourne la conversion de l'instance dans l'encodage UTF-8.
ConstArrayView< UChar > utf16() const
Retourne la conversion de l'instance dans l'encodage UTF-16.
bool empty() const
Vrai si la chaîne est vide (nulle ou "")
bool null() const
Retourne true si la chaîne est nulle.
Integer len(const char *s)
Retourne la longueur de la chaîne s.
Int32 toInt32(Int64 v)
Converti un Int64 en un Int32.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-