Mingw 3.4.5 отсутствует dlfcn.h?
Возможно ли, что моя установка 3.4.5 в mingw ошибочна? или это предусмотрено в какой-либо другой библиотеке, плавающей вокруг?
в случае, если вам интересно, dlfcn.h - это то, где определены такие вещи, как dlopen и dlclose, поэтому он должен быть довольно стандартным
Ответы
Ответ 1
Это не в моей установке MinGW 3.4.5, поэтому я сомневаюсь, что ваша установка неисправна. Я полагаю, что разработчики MinGW ожидают, что вы будете использовать функции Win32, поддерживающие динамическую загрузку (LoadLibrary()
, GetProcAddress()
и т.д.).
Ответ 2
dlfcn-win32 является оболочкой для dlfcn вокруг функций win32 dll
Ответ 3
mingw - это внедрение компилятора для окон (gcc-порт), реализующих API win32. Функции в dlfcn.h(dlopen/dlsym и др.) - это POSIX, а не окна, поэтому реализация win32 не существует. В msys или cygwin может быть оболочка, но я боюсь, что различия между DLL файлами Windows и механизмами общей библиотеки ELF означают, что вам просто нужно будет переносить API-интерфейсы Windows.
Ответ 4
У меня была эта проблема, и после установки dlfcn-win32-r19.tar.bz2 на windows под оболочкой cygwin проблема была решена.
https://code.google.com/p/dlfcn-win32/downloads/detail?name=dlfcn-win32-r19.tar.bz2
Я надеюсь, что это поможет другим парням.
Ответ 5
Я знаю, что это старый вопрос, но тем не менее актуальный и сегодня, независимо от версии GCC от MinGW.org, которая может быть использована.
Те, кто заметил, что MinGW действительно предназначены для использования с собственными API-интерфейсами Win32, на основе LoadLibrary() и GetProcAddress(), а не с API-интерфейсами POSIX, объявленными в dlfcn.h, полностью верны; таким образом, MinGW.org традиционно не реализовал реализацию функций API dlfcn.h.
Однако, начиная с mingwrt-3.21, мне нужно было реализовать функцию MinGW, которая сродни использованию POSIX для dlsym() в адресном пространстве RTLD_DEFAULT. Следовательно, начиная с этой версии среды MinGW, я намерен поддерживать совместимую реализацию API-интерфейсов POSIX dlfcn.h в качестве обертки вокруг собственных API-интерфейсов LoadLibrary(), GetProcAddress() и PSAPI.DLL.
Ответ 6
dlfcn.h: Нет такого файла или каталога
Чтобы решить эту проблему, мне пришлось добавить в файл .pro:
DEFINES += _WINDOWS