Điểm:2

vấn đề với việc tạo một dự án c ++ với G ++

lá cờ aq

tôi đang cố gắng xây dựng thác thư viện bằng G++ 8.3.0. Trong tài liệu họ đề cập rằng nó đã được thử nghiệm trên G++ 4.7.2. Câu hỏi của tôi là, có cần hạ cấp xuống 4.7.2 không? nếu vậy bạn có thể vui lòng cho tôi biết làm thế nào? bởi vì tôi đã thử cả 4.8 (phiên bản cũ nhất có sẵn theo lệnh $ which gcc) và 8.3.0 để tạo tầng và nhận được lỗi sau:

Trong tệp bao gồm từ ../../include/descore/descore.hpp:104,
                 từ ../../include/descore/stdafx.h:38,
                 từ Wildcard.cpp:44:
../../include/descore/stltree.hpp:74:34: lỗi: định nghĩa lại âstruct std::less<_Tp*>â
     mẫu <typename T> struct less <T *>
                                  ^~~~~~~~~~
Trong tệp bao gồm từ /usr/include/c++/8/bits/stl_tree.h:65,
                 từ /usr/include/c++/8/set:60,
                 từ ../../include/descore/descore.hpp:88,
                 từ ../../include/descore/stdafx.h:38,
                 từ Wildcard.cpp:44:
/usr/include/c++/8/bits/stl_function.h:424:12: lưu ý: định nghĩa trước đó của âstruct std::less<_Tp*>â
     struct less<_Tp*> : public binary_function<_Tp*, _Tp*, bool>
            ^~~~~~~~~~
thực hiện: *** [Makefile:17: ../../objs/descore/Wildcard.o] Lỗi 1

Hay tôi nên thay đổi các tệp .hpp? (Mục đích cuối cùng của tôi là sử dụng cascade với G++-11. trên Ubuntu 19.10)

Cảm ơn trước.

lá cờ cc
Bạn cần sử dụng trình biên dịch c ++, sẽ là g ++ trên Ubuntu, không phải gcc.
student_11 avatar
lá cờ aq
Tôi đã chỉnh sửa bài viết của mình. cảm ơn. Bạn có gặp lỗi tương tự khi sử dụng lệnh 'make' không?
lá cờ hr
Đối với tôi, việc sử dụng `g++-4.8` (trên Ubuntu 18.04) khắc phục được vấn đề xác định lại mẫu (mà tôi nghĩ là do mã cuộn mã chuyên môn hóa một phần của riêng nó cho các loại con trỏ); tuy nhiên có thêm lỗi ở giai đoạn liên kết
lá cờ hr
... OK, vì vậy tôi đã xây dựng nó với g++-4.8 thông qua cmake, bằng cách thêm `descore` vào `target_link_libraries` và sau đó sử dụng `cmake -DCMAKE_CXX_COMPILER=g++-4.8 -DCMAKE_CXX_FLAGS=-pthread`. Nhưng tôi không biết làm thế nào để nó hoạt động với g ++ sau này.
student_11 avatar
lá cờ aq
Cảm ơn @steeldriver. Tôi đã xây dựng nó bằng Microsoft VS2015 trước đây. Lúc đầu, nó không hoạt động, nhưng sau khi tôi thay đổi định nghĩa macro MSC_VERSION trong định nghĩa.hpp (tức là #if _MSC_VER
lá cờ hr
@student_11 có *có thể* là một cách để làm điều đó với g++ tuy nhiên tôi không thể thấy điều gì rõ ràng (chẳng hạn như chuyển đổi trình biên dịch hoặc `#ifdef` trong tệp `stl_function.h` cho phép bật chức năng tắt). Bạn có thể cần xóa mã chuyên môn hóa một phần xung đột khỏi dự án. Chúc may mắn.
lá cờ cc
Các dòng 80-90 của stltree.hpp cung cấp cho bạn các tùy chọn để sửa đổi.
student_11 avatar
lá cờ aq
@ubfun1 cảm ơn. chúng ta nên bình luận không gian tên phía trên những dòng đó để loại bỏ lỗi.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.