2009-09-09 34 views
9

có thể cài đặt mingw 3.4.5 của tôi bị lỗi không? hoặc là điều này được cung cấp trên một số thư viện khác nổi xung quanh?mingw 3.4.5 thiếu dlfcn.h?

trong trường hợp bạn đang tự hỏi, dlfcn.h là nơi những thứ như dlopen và dlclose được định nghĩa, vì vậy nó nên được khá chuẩn

+0

Funny, Tôi đã có vấn đề này thời gian gần đây quá. – GManNickG

+0

MinGW không tuân thủ POSIX, theo thiết kế. Nó có nghĩa là một chuỗi cửa sổ bản địa. Sử dụng Cygwin cho các công cụ tuân thủ POSIX cho win32. – doug65536

Trả lời

6

Nó không có trong cài đặt MinGW 3.4.5 của tôi, vì vậy tôi nghi ngờ cài đặt của bạn bị lỗi . Tôi cho rằng các nhà bảo trì MinGW mong bạn sử dụng các chức năng Win32 hỗ trợ tải động (LoadLibrary(), GetProcAddress(), v.v.).

3

mingw là một hàm ý của trình biên dịch cho cửa sổ (cổng gcc) triển khai API win32. Các hàm trong dlfcn.h (dlopen/dlsym et al.) Là POSIX, không phải windows, do đó không có win32 thực hiện tồn tại. Có thể có một wrapper trong msys hoặc Cygwin, nhưng tôi lo ngại rằng sự khác biệt giữa các cửa sổ DLL và cơ chế thư viện được chia sẻ ELF có nghĩa là bạn sẽ chỉ cần chuyển đến các API của cửa sổ.

0

Tôi biết đây là một câu hỏi cũ, nhưng dù sao vẫn liên quan đến ngày hôm nay, bất kể phiên bản GCC từ MinGW.org có thể đang được sử dụng.

Những người đã quan sát thấy MinGW thực sự được dự định sử dụng với API Win32 gốc, dựa trên LoadLibrary() và GetProcAddress(), chứ không phải API cụ thể POSIX được khai báo trong dlfcn.h, là hoàn toàn chính xác; do đó, MinGW.org không cung cấp bất kỳ việc triển khai thực hiện chức năng API nào của dlfcn.h.

Tuy nhiên, kể từ mingwrt-3.21, tôi cần thực hiện chức năng MinGW tương tự như việc sử dụng POSIX của dlsym() trên không gian địa chỉ RTLD_DEFAULT. Do đó, từ phiên bản này của thời gian chạy MinGW trở đi, tôi dự định duy trì việc triển khai phù hợp của API POSIX dlfcn.h, như một trình bao bọc xung quanh các API Win32 của GetLabc(), GetProcAddress() và PSAPI.DLL.

+0

Xin lưu ý rằng việc thực hiện MinGW của dlfcn là ** không ** bắt nguồn từ dlfcn-win32, (được đề cập trong câu trả lời khác, và bây giờ được tìm thấy trên GitHub). Nó là một triển khai mới, được viết từ đầu, để cung cấp tính tuân thủ tính năng POSIX toàn diện hơn, (mà MinGW cần); nó cũng được phân phối theo giấy phép MIT dễ chấp nhận hơn là GPL-2. –

0

dlfcn.h: Không có tập tin hoặc thư mục

Để giải quyết này, tôi đã phải thêm vào file .pro:

DEFINES += _WINDOWS