Tôi đang sử dụng Visual C++ 2008, SP1. Tôi có một ứng dụng QT (gui, .exe) trong debug build config. Nó được thiết lập để sử dụng phiên bản DLL đa luồng Debug của CRT, còn gọi là MSVCRTD.lib.Làm thế nào để bạn xây dựng một debug .exe (MSVCRTD.lib) chống lại một phát hành xây dựng lib (MSVCRT.lib)?
Tôi đang liên kết với thư viện của bên thứ ba được xây dựng trong chế độ phát hành và sử dụng phiên bản DLL đa luồng (không gỡ lỗi) của CRT, còn gọi là MSVCRT.lib.
Liên kết và chạy nhưng gặp sự cố khi khởi động. Trong khi liên kết tôi nhận được cảnh báo:
LINK: warning LNK4098: defaultlib 'MSVCRT' xung đột với việc sử dụng các lib khác; sử dụng/NODEFAULTLIB: thư viện
tôi đã cố gắng thiết lập /NODEFAULTLIB:msvcrt.lib
nhưng điều đó dẫn đến 5 liên kết lỗi do những biểu tượng mất tích.
Vì vậy, không thể sử dụng hai libs khác nhau? Phương án thay thế là gì? Tôi có thể tạo một DLL ra khỏi lib của bên thứ 3 không? Hay đó là điều mà bên thứ ba sẽ phải làm?
Ngoại lệ lúc khởi động là:
"Unhandled ngoại lệ tại ....... trong MyApp.exe: ...... Truy cập vi phạm đọc vị trí 0x00000000f"
Sau đây là ngăn xếp cuộc gọi sau khi ứng dụng được chạy và nó bị treo:
MyApp.exe!std::_Aux_cont::_Getcont() + 0xa bytes C++
MyApp.exe!std::_Iterator_base_aux::_Getmycont() + 0x1b bytes C++
MyApp.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned int,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,unsigned int> >,0> >::const_iterator::operator*() + 0x28 bytes C++
MyApp.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned int,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,unsigned int> >,0> >::iterator::operator*() + 0xf bytes C++
MyApp.exe!std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned int,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,unsigned int> > >::operator[]() + 0xe9 bytes C++
MyApp.exe!ThirdPartyLib::client::`anonymous namespace'::init_xlt_mode() + 0x5f bytes C++
[email protected]() + 0x8d8f3 bytes C++
msvcr90d.dll!_initterm(void (void)* * pfbegin=0x006c4468, void (void)* * pfend=0x006cb0b8) Line 903 C
MyApp.exe!__tmainCRTStartup() Line 501 + 0xf bytes C
MyApp.exe!WinMainCRTStartup() Line 403 C
kernel32.dll!7c817067()
Bạn gặp sự cố gì khi khởi động? – LeopardSkinPillBoxHat
Xin chào, tôi vừa cập nhật bài đăng gốc ở trên với nhiều chi tiết hơn và câu trả lời cho câu hỏi của bạn. – ApplePieIsGood