2009-09-09 3 views
9

Возможно ли, что моя установка 3.4.5 в mingw неисправна? или это предусмотрено в какой-то другой библиотеке, плавающей вокруг?mingw 3.4.5 отсутствует dlfcn.h?

в случае, если вы задаетесь вопросом, dlfcn.h где такие вещи, как dlopen и dlclose определены, поэтому он должен быть довольно стандартным

+0

Забавно, у меня была эта проблема в последнее время тоже. – GManNickG

+0

MinGW не соответствует требованиям POSIX, по дизайну. Он предназначен для создания родственных оконных цепей. Используйте Cygwin для POSIX-совместимых инструментов для win32. – doug65536

ответ

6

Это не в моей установки MinGW 3.4.5, так что я сомневаюсь, что ваша установка неисправна , Я полагаю, что разработчики MinGW ожидают, что вы будете использовать функции Win32, поддерживающие динамическую загрузку (LoadLibrary(), GetProcAddress() и т. Д.).

3

mingw - это внедрение компилятора для окон (gcc-порт), реализующих API win32. Функции в dlfcn.h (dlopen/dlsym и др.) - это POSIX, а не окна, поэтому реализация win32 не существует. В msys или cygwin может быть оболочка, но я боюсь, что различия между DLL-файлами Windows и механизмами общей библиотеки ELF означают, что вам просто нужно будет переносить API-интерфейсы Windows.

0

Я знаю, что это старый вопрос, но тем не менее актуальный и сегодня, независимо от версии GCC от MinGW.org, которая может быть использована.

Те, кто заметил, что MinGW действительно предназначены для использования с собственными API-интерфейсами Win32, основанные на LoadLibrary() и GetProcAddress(), а не специфичные для POSIX API, объявленные в dlfcn.h, являются полностью правильными; таким образом, MinGW.org традиционно не реализовал реализацию функций dlfcn.h API.

Однако, начиная с mingwrt-3.21, мне нужно было реализовать функцию MinGW, которая сродни использованию POSIX для dlsym() в адресном пространстве RTLD_DEFAULT. Следовательно, начиная с этой версии среды MinGW, я намерен поддерживать совместимую реализацию API-интерфейсов POSIX dlfcn.h в качестве обертки вокруг собственных API-интерфейсов LoadLibrary(), GetProcAddress() и PSAPI.DLL.

+0

Обратите внимание, что реализация MinGW dlfcn ** не **, полученная из dlfcn-win32 (упомянутая в другом ответе, и теперь ее можно найти на GitHub). Это новая реализация, написанная с нуля, для обеспечения более полного соответствия функций POSIX (для чего требуется MinGW); он также распространяется по более разрешительной лицензии MIT, а не GPL-2. –

0

dlfcn.h: Нет такого файла или каталога

Чтобы решить эту проблему, я должен был добавить в файл .pro:

DEFINES += _WINDOWS 
Смежные вопросы