01/10/2018, 15:52
Cần xử lý lỗi undefined reference to `operator<<(std::ostream&, __mpz_struct const*) ntn ạ
#include <gmpxx.h
#include <iostream
using namespace std;
int main()
{
mpz_class x = 42;
cout << x;
}
Bài liên quan
Nạp chồng << cho class mpz_class nếu chưa có. Nếu đã nạp chồng rồi thì xem lại prototype và definiton của hàm nạp chồng
Bạn nên xem lại bài học cũ :3
<< đã được định nghĩa trong gmpxx.h.
Xem prototype có khớp với definiton không nữa. Mà code của bạn thiếu kí tự > ở 2 include đầu là do paste lên đây mới thiếu hay trong code thiếu vậy
Lỗi này là do gọi đến 1 hàm chưa khái báo, định nghĩa hoặc đã khai báo định nghĩa nhưng khai báo và định nghĩa protype không khớp nhau
2 cái > là do copy lên đây thiếu đấy ạ. Còn về phần kia, sáng mai em chụp ảnh rồi anh xem hộ em cái chỗ khai báo trong thư viện gmpxx.h nhé. Em cảm ơn. Rất mong được giúp đỡ ạ
mpz_class
chỉ là class trừu tượng, với nó nằm ở library ngoài (GMP) nên<<
không hiểu. Muốn inmpz_class
thì có thể overload<<
, hoặc (dễ hơn) là cast sang số nguyên, hoặcmpz_out_str()
Khi làm việc với GMP thì không nên lôi hàm arithmetic. I/O… của standard library vào, dùng hàm của riêng nó thôi,
mpz_out_str()
để in thay vìstd::cout
là một ví dụEm cảm ơn rất rất nhiều ạ
lúc link chương trình thiếu
-lgmp
~.~Trong ctr khác, em có cả gmp, gmpxx mà vẫn bị lỗi đó
thế em compile bằng lệnh gì? Có thêm flag gì vô ko hay là bấm 1 nút build như chương trình hello world?
Em dùng Window mà anh. Trong phần link conpiler đã liên kết với thư viện gmp và gmpxx rồi. Sau đó buil như thường thôi
Windows mà ko compile bằng tay vậy em xài trình biên dịch gì, VS2017 hay là trình dịch MinGW nào đó? Nếu là MinGW thì xem IDE của em nó có in ra command line ko, dò coi lúc nó link nó có link
-lgmp -lgmpxx
hay ko.khi em thay mpz thành mpf thì cách 2 không chạy được. giúp em với ạ
em dùng codeblocks ạ
vậy em lấy cái screenshot mấy chỗ em thêm thư viện vô đi
anh cũng chưa xài gmpxx bao giờ =)
có thể là thư viện em down về nó ko có bản Debug, thử build ở chế độ Release xem
có phải thêm như vậy ko hay thêm ở đâu đó @_@
em thêm cái libgmpxx.a vô nữa
đúng là ko thiếu gmp mà thiếu gmpxx
cái kia chứa cả 2 rồi a ạ
khi em chạy ctr nó báo lỗi ở thư viện này
libgmpxx.a khác libgmp.a @_@ 1 cái của C++ 1 cái của C, operator<< với operator>> là của C++, nó báo undefine reference tới mấy operator này tức là em chưa link thư viện gmpxx
vô C:\gmp-6.1.2\libs coi có file libgmpxx.a ko