Lỗi C2864: "a static value data member with…integral type" khi code opencv2

em đang học C++ thì gặp lỗi sau, mong admin giúp gỡ lỗi
Error 1 error C2864: ‘cv::sfinae::has_parenthesis_operator<C,Ret,Args…>::value’ : a static data member with an in-class initializer must have non-volatile const integral type d:\work\opencv\opencv 3.4\opencv\build\include\opencv2\core\cvstd_wrapper.hpp 52 1 ConsoleApplication3

Mình góp ý là bạn phải đưa code lên đây nữa thì may ra mới biết được lỗi ở đâu :sweat_smile: với cả khi hỏi lỗi thì chỉ cần ghi cái đoạn ở giữa thôi “a static value data member with…intergal type”.
Còn đây là tài liệu liên quan đến lỗi này : https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-2/compiler-error-c2864?view=vs-2019

3 Likes

cám ơn bạn đã trả lời. code đây bạn nhá

using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
	Mat image;
	image = imread("D:\\img1.jpg", IMREAD_COLOR); // doc file 
	if (!image.data) //kiem tra doc thanh cong hay khong 
	{
		//cout << "Could not open or find the image" << std::endl; return -1;
	}
	imshow("Display window", image); // hien thi anh 
	waitKey(0); // Wait for a keystroke in the window return 0; 
}

Khi mình dùng make file thì xuất hiện lỗi này:
error in configuration process, project file may be invalid.
có lẽ lỗi này đã gây ra lỗi 2864 ở trên. mong mọi người giúp đỡ

Theo như thông báo lỗi thì lỗi này do opencv gây ra.
Dòng 52 của tập tin:

d:\work\opencv\opencv 3.4\opencv\build\include\opencv2\core\cvstd_wrapper.hpp

Có 2 kết quả về lỗi giống bạn, thời gian hỏi cũng đều thời gian gần đây:
https://quick-geek.github.io/answers/968034/index.html
https://ru.stackoverflow.com/questions/968034/Ошибка-c2864-при-работе-с-opencv

5 Likes

Đã khai báo các lib hoặc dll chưa ?
Hơn nữa code kia mà read fail là cũng ăn hành.

4 Likes

đã khai báo lib, còn DLL không biết khai báo thế nào bạn ạ. vì trên mạng không thấy đề cập DLL

không đọc nổi tiếng nga bạn ạ. trình kém

Cả 2 đều có nội dung hỏi và trả lời giống nhau thôi. Nhưng đều chưa có cách giải quyết.

Theo như câu trả lời:
Dòng 52 của tập tin cvstd_wrapper.hpp là:

static CV_CONSTEXPR bool value = type::value;

Khi đó, trong tập tin cvdef.h có định nghĩa cho CV_CONSTEXPRconstexpr:

#ifndef CV_CONSTEXPR
#  if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900/*MSVS 2015*/)
#    define CV_CONSTEXPR constexpr
#  endif
#endif
#ifndef CV_CONSTEXPR
#  define CV_CONSTEXPR
#endif

Nhưng 22 ngày trước đó, CV_CONSTEXPRconst.

  #ifndef CV_CONSTEXPR
- #  define CV_CONSTEXPR const
+ #  define CV_CONSTEXPR
  #endif

Do ai đó trong dự án OpenCV đã chỉnh sửa nội dung của cvdef.h. Điều này đã gây ra lỗi trên.

4 Likes

Có 2 loại lib là static lib và dynamic(shared) lib.

Loại đầu không cần dll nhưng loại sau thì phải có dll.
Dll thường sẽ được copy vào cùng nơi với exe hoặc đường dẫn mà exe khởi động. Thông thường sẽ rơi vào cái thứ 2.

Một chú ý nữa là dll build bằng MinGW có thể không chạy với dự án build bằng MSVC và ngược lại. Và cũng cần phải đúng x86 hoặc x64. Nếu gặp phải trường hợp này thì phải build lại opencv từ mã nguồn.

5 Likes

câu trả lời của bạn rất giá trị. chắc mình phải dùng bản opencv cũ hơn thôi

chào mọi người. sau khi xem lại các thiết lập thì mình đã biên dịch thành công, nhưng khi debug thì máy báo thiếu file .dll, cụ thể thiếu các file sau MSVCP140D.dll , VCRUNTIME140D.dll , CONCRT140D.dll và không chạy. mong mọi người cho lời khuyên?

1 Like

Thế phải khai báo thêm các lib hoặc chuyển thử qua chế độ release.

4 Likes

không được bạn ạ, chế độ nào cũng lỗi

Cụ thể là bạn nên đưa thêm các thông tin:
Đang dùng OpenCV version bao nhiêu ?
Có build lại từ mã nguồn hay dùng cái build sẵn ? x86 hay x64
Compiler để build OpenCV là gì ?
Dùng IDE hoặc editor nào ?
Compiler sử dụng là gì ? x86 hay x64 ?
….

3 Likes

chào bạn.
mình dùng visual studio 2013, cho win 10 64 bít. opencv 3.4.1, không build lại mã nguồn mà dùng cái có sẵn. x64 ( từ bản 3. trở đi chỉ có x64)
Compiler để build OpenCV là gì ? cái này chính là visual studio mà bạn
Dùng IDE hoặc editor nào ? cũng là visual studio

có thể sửa trên PC của mình ko?

Bạn dùng VS thì trình biên dịch mặc định của nó là MSVC. OpenCV bạn không build lại thì cần kiểm tra xem nó có phải bản build bằng MSVC hay không và 32 hay 64 bit. Nếu nó được build bằng MinGW và số bit khác cấu hình dự án thì nó rất dễ lỗi hoặc không build hay chạy được.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?