điều này rất khó hiểu. Tôi đã dành rất nhiều thời gian đọc bài viết về điều này trên stack, vv Vẫn còn bối rối.Khả năng tương thích của * .dll * .a * .lib * .def giữa VisualStudio và gcc
Tôi đang sử dụng Qt và C++ để mã hóa. Trong Qt, tôi đang sử dụng tùy chọn gcc cho trình biên dịch.
Vấn đề là nhiều thư viện của bên thứ ba mà tôi đã thử dường như không hoạt động.
Tôi mới sử dụng các tệp .dll, .a, .lib, .def và thư viện.
Câu hỏi 1:
Theo kinh nghiệm hạn chế của tôi (Tôi đã thử 7 hoặc 9 thư viện cho đến nay), nhà cung cấp các thư viện hiếm khi cho bạn biết liệu .dll đã được thực hiện với VisualStudio hoặc gcc. Điều này làm tăng thêm sự nhầm lẫn. Họ hầu như không bao giờ làm cho nó rõ ràng những gì trình biên dịch thư viện tương thích với. Vì vậy, tôi sẽ đánh giá cao một số lời khuyên cuộc sống thực về cách đối phó với cơn ác mộng này. Hầu như tất cả các thư viện tôi đã thử là các dự án OpenSource. Tôi sẽ không nêu tên ở đây, nhưng đây là những dự án nổi tiếng. Tôi chắc chắn rằng vấn đề là tôi thiếu kiến thức ...
MinGW và gcc Thế giới
question2:
Theo như tôi có thể nói, năng động C++ thư viện cho vũ trụ gcc MinGW yêu cầu này, ngay ?
* .h
* .dll
* .a
Câu hỏi 3:
Thật không may, file .a thường thiếu và thư viện không hoạt động. Điều này rất khó hiểu. Nếu tập tin .a bị thiếu, tôi có may mắn không?
Câu hỏi 4:
Tôi có thể tạo tệp .a cho MinGW/gcc nếu * .dll được tạo bằng gcc không?
Câu hỏi 5: Tôi có thể tạo tệp .a cho MinGW/gcc nếu * .dll được tạo bằng VisualStudio không?
Câu hỏi 6:
Có thể một * .dll (được tạo bằng MinGW/gcc) quá cũ và không còn tương thích với MinGW/gcc mới hơn không?
Câu hỏi 7:
Các dự án Qt sử dụng MinGW/gcc không bao giờ cần tệp * .lib, phải không? Đó là một điều duy nhất của VisualStudio, phải không?
Câu hỏi 8:
Tôi không cần tệp * .def để sử dụng * .dll trong dự án Qt sử dụng MinGW/gcc, phải không?
VisualStudio Thế giới
Câu hỏi 9:
Theo như tôi có thể nói, năng động C++ thư viện cho VisualStudio yêu cầu sau đây:
* .h
* .dll
* .lib
Phải không? Một lần nữa, vấn đề là tệp * .lib hầu như luôn bị thiếu. Ngoài ra, không có hướng dẫn rõ ràng về trình biên dịch thư viện nào tương thích. Vậy làm thế nào tôi có thể biết rằng nó chỉ dành cho VisualStudio hay không?
Câu hỏi 10:
Nếu tệp .lib bị thiếu, tôi có gặp may không?
Câu hỏi 11:
Tôi có thể tạo tệp .lib cho VisualStudio nếu * .dll được tạo bằng VisualStudio không? Làm sao?
Câu hỏi 12:
Tôi có thể tạo tệp .lib cho VisualStudio nếu * .dll được tạo bằng MinGW/gcc không? Làm sao?
Câu hỏi 13:
Có thể là * .dll (được tạo bằng VisualStudio) quá cũ và không còn tương thích với VisualStudio mới hơn?
Câu hỏi 14:
Nếu trong QtCreator tôi chọn trình biên dịch VisualStudio, có tương thích 100% với thư viện động được biên dịch bởi REAL VisualStudio bởi người khác không? Tôi tin rằng các tùy chọn trình biên dịch VisualStudio trong Qt Creator là một trình biên dịch VisualStudio giả mạo.
Câu hỏi 15:
Nếu trong QtCreator tôi chọn trình biên dịch MinGW/gcc, tôi có thể sử dụng với thư viện động Qt được biên dịch bởi REAL VisualStudio bởi người khác không?
Câu hỏi 16:
Tôi không cần tệp * .def để sử dụng * .dll trong dự án Qt sử dụng MinGW/gcc, phải không?
Câu hỏi 17: Tôi có thể chuyển đổi * lib (làm việc với tệp * .dll và * .h) được thực hiện bằng REAL VisualStudio thành tệp * .a để tôi có thể sử dụng tệp * .a với chưa sửa đổi * .dll, và * .h tập tin trong một dự án Qt gcc?
Tôi tin rằng sự phức tạp này đặc biệt đối với Windows. Bạn sẽ không có nó khi sử dụng Qt trên Linux! –
Bạn có thể muốn chia nhỏ câu hỏi này thành nhiều câu hỏi (cụ thể là "tôi có thể tạo X nếu tôi có Y") ... có thể nhiều người có thể trả lời một số câu hỏi này và nếu bạn hỏi riêng họ (vì họ đẹp không liên quan đến Qt) về liên kết cửa sổ, bạn có thể nhận được phản hồi nhanh hơn. Tất cả những gì được nói, câu trả lời ngắn nhất tôi có thể cung cấp cho bạn là * không sử dụng MinGW nếu bạn không phải * - VisualStudio là chuẩn được hỗ trợ trên nền tảng và bạn sẽ có trải nghiệm tốt hơn trong thời gian dài (nếu một số cơn đau trong ngắn hạn với phụ thuộc thư viện nguồn mở). –
-1: để hỏi 16 câu hỏi cùng một lúc. –