Вот ссылка, которая шаг за шагом объясняет, что вам нужно. ссылка: http://www.thebestcsharpprogrammerintheworld.com/2017/07/26/localizing-a-wpf-program-using-c/
XAML:
Код:
using System.Globalization;
using System.Configuration;
Properties.Resources.Culture = new CultureInfo(ConfigurationManager.AppSettings["Culture"]);
//To change the locale in runtime you need to set
public static void SetLanguage(string locale)
{
if (string.IsNullOrEmpty(locale)) locale = "en-US";
Properties.Resources.Culture= new System.Globalization.CultureInfo(locale);
}
AppConfig.cs:
Что вы подразумеваете под "поиском символа времени выполнения"? Вы имеете в виду динамическую загрузку библиотек с использованием dlopen
и dlsym
и и т. Д. ? Эквиваленты в Windows называются LoadLibrary
и GetProcAddress
.
В Windows вы не экспортируете символы из исполняемого файла. Вы должны только экспортировать их из DLL. Правильный способ решить вашу проблему - перестроить архитектуру так, чтобы экспортированные символы находились в dll, с которым могут связываться исполняемый файл и другие dll плагина.
Как гласит ИНФОРМАЦИЯ 1800, не делай так. Переместите Object из исполняемого файла в «третью» DLL. Связать плагины и исполняемый файл с этим.
Вы не можете, легко. Загрузчик Windows не предназначен для экспорта символов из EXE-файла и его привязки к символам в DLL.
Один из примеров, который я видел, - это экспорт DLL определенной функции, которую вызывает EXE. Он принимает в качестве параметра структуру, которая содержит адреса функций в EXE для вызова DLL.