Итак, я работаю над проектом для Windows, который использует Mono C API, и до сих пор использовал широкие символьные строки (wchar_t*
) для всего.(в основном из-за поддержки путей к файлам длиннее 260 символов), однако я сталкиваюсь с препятствиями, поскольку API домена приложения Mono не поддерживает загрузку сборок из пути к файлу UTF16.
API, который я обычно использую, это mono_domain_assembly_open , но, похоже, не существует альтернативного API, который принимает параметр name
в качестве const wchar_t*
или MonoString*
.
Забегая вперед, мне также интересно, как можно получить доступ к классам / методам в загруженной сборке, когда имя класса / метода содержит не-ANSI символы.(поскольку идентификаторы .NET могут содержать любой допустимый символ Unicode) API, например mono_method_desc_new , имеет только реализации на основе char
.
Я знаю, что могу использовать WideCharToMultiByte переназначить строки, но я не уверен, какую кодовую страницу использовать, чтобы обеспечить надлежащую функциональность, если имена файловых путей или идентификаторов пользователя содержат не-ANSI символы.