При условии, что у вас нет заголовка разработки и файлов lib, доступных для DLL, и вам необходимо динамически загрузить DLL в ваш проект C ++, тогда вы можете сделать следующее.
Определите указатель на функцию (эквивалентно вашему объявлению extern
):
typedef int FnSomeFunction(const char* input);
Загрузите библиотеку (здесь я использую LoadLibraryA
для загрузки библиотеки DLL с именами, это зависит от вашего Проект C ++). DLL должна находиться в пути поиска, то есть в том же пути, что и исполняемый файл):
HMODULE hModule = LoadLibraryA("something.dll");
Проверить, что модуль успешно загружен:
if (hModule == nullptr)
throw std::runtime_error("Lib not loaded");
Получить точку входа в функцию из библиотеки:
FnSomething* fnSomething = (FnSomeFunction*)GetProcAddress(hModule, "somthng");
Вызовите функцию:
(*fnSomething)("some text");
Освободите библиотеку, когда она больше не нужна:
FreeLibrary(hModule);
Используйте определенную для пользователя конфигурацию.
Установка частного местоположения области конфигурации
Местоположение по умолчанию для частной области конфигурации:
user-home-dir/.eclipse / <идентификатор продукта> _ <версия продукта> / конфигурация
Пользователь домашний dir определяется user.home системным свойством Java. Идентификатор продукта и версия получены из файла маркера продукта .eclipseproduct при установке Eclipse.