Tôi đang gặp một lỗi mối liên kết mới đối với tôi trong một dự án tôi đang làm việc với:LNK2022 hoạt động siêu dữ liệu: thông tin bố trí không phù hợp trong các loại trùng lặp
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.basic_string<char,std::char_traits<char>,std::allocator<char> >): (0x0200004e).
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >): (0x02000075).
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._String_iterator<char,std::char_traits<char>,std::allocator<char> >): (0x02000091).
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._String_const_iterator<char,std::char_traits<char>,std::allocator<char> >): (0x02000092).
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._String_val<char,std::allocator<char> >): (0x02000097).
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._String_val<wchar_t,std::allocator<wchar_t> >): (0x02000099).
Chúng tôi đang sử dụng Visual Studio 2010 trong Windows 7.
Dự án này được sử dụng để biên dịch. Đó là một trình bao bọc C++/CLI DLL xung quanh một số mã không được quản lý, và do đó bao gồm Hỗ trợ thời gian chạy ngôn ngữ chung. Điều có thay đổi là một thư viện tĩnh bên ngoài mà chúng tôi liên kết đã được "cập nhật". Chúng tôi hiện đang gặp lỗi này khi chúng tôi cố gắng biên dịch dự án liên kết với nó.
"trợ giúp" của Microsoft cho vấn đề này là "chạy ildasm –tokens trên tệp đối tượng để tìm loại có mã thông báo được liệt kê trong error_message và tìm sự khác biệt". Sau đó, tôi đã kiểm tra this page và nhận thấy rằng tùy chọn /tokens
chỉ hợp lệ đối với các tệp .exe và .dll ... nhưng đây là lỗi liên kết, vì vậy tệp .dll của tôi chưa được tạo!
Tôi đã thử chạy những thứ như ildasm -tokens AssemblyInfo.obj
, nhưng điều duy nhất xảy ra là một cửa sổ mở ra với thông báo lỗi vô cùng hữu ích này:
Cảm ơn Microsoft!
Tôi không thực sự chắc chắn cách tiếp tục khắc phục sự cố này. Bản phát hành Bản phát hành hoạt động đúng cách - chỉ có Debug bị rối tung. Vì vậy, ở đâu đó trong hỗn hợp, tôi đoán loại std::string
có kích thước khác hoặc một cái gì đó ...
Bất kỳ ý tưởng nào?
Thỉnh thoảng tôi nhận được lỗi này khi tôi thay đổi một tập tin tiêu đề, và trình biên dịch không biên dịch lại tất cả các tệp mã mà nó cần. Bạn có thể đã làm được điều này, nhưng việc xây dựng lại toàn bộ và sạch sẽ có thể hữu ích. –
@DavidYaw Cảm ơn bạn đã giới thiệu - Tôi đã và đang xây dựng lại hoàn toàn mà không thành công. Tôi nghĩ rằng tôi đang trên đường mòn của một cái gì đó ở đây mặc dù ... – aardvarkk