Tôi đã tạo một dự án DLL trong VS 2005 cho native Win32/unmanaged C++, gọi nó là myProj.dll. Nó phụ thuộc vào một DLL thương mại của bên thứ ba mà lần lượt phụ thuộc vào msvcr90.dll (tôi giả sử nó được xây dựng từ một dự án VS 2008). Tôi sẽ gọi nó là thirdParty.dll.msvcr90.dll phụ thuộc vào dự án VS 2005 C++
Dự án DLL của tôi xây dựng tốt trong VS2005. Tôi đã xây dựng một ứng dụng thử nghiệm (một lần nữa, VS 2005 Win32 C++) liên kết đến myProj.lib. (Là một sang một bên, đánh giá bởi kích thước nhỏ của .lib, và bởi thực tế là, tại thời gian chạy, ứng dụng phải xác định vị trí myProj.dll, tôi đoán rằng .lib chỉ là một wrapper cho một cuộc gọi đến loadLibrary() tải các DLL thực tế, là đóng?)
Vấn đề của tôi là, tại thời gian chạy, ứng dụng thử nghiệm không thể xác định vị trí msvcr90.dll (cũng không phải msvcp90.dll), phụ thuộc vào đó bắt nguồn từ thirdParty.dll.
Tôi đã cài đặt gói redist của Microsoft, và vì vậy có tất cả thư viện std (9.0) C++ trong c: \ WINDOWS \ WinSxS \ x86_Microsoft.VC90.CRT _.... Hơn nữa, nếu tôi chỉ phụ thuộc vào walker tại thirdParty.dll, nó vui vẻ giải quyết các tham chiếu đến vị trí đó.
Nhưng, nếu tôi điểm depends.exe tại ứng dụng thử nghiệm của tôi (.exe) hoặc myProj.dll, msvcr90.dll và msvcp90.dll không tìm thấy.
Tôi đoán có điều gì đó tôi cần định cấu hình trong VS2005 để tệp .exe hoặc myProj.dll nhận biết vị trí của phiên bản 9.0 của thư viện std C++ (có lẽ là nơi gói được cài đặt lại trong C: \ WINDOWS \ WinSxS), nhưng tôi không thể tìm ra nó là gì. Có phải tôi đang trên đường ray bên phải không? Tôi lưu ý rằng, nếu tôi chỉ đơn giản là sao chép các tập tin msvc * 90.dll vào thư mục ứng dụng của tôi, thì phụ thuộc được giải quyết, nhưng tôi gặp lỗi thời gian chạy về tải không đúng std C++ DLL, v.v.
Cảm ơn rất nhiều trước.
Có lẽ đó là cách tốt nhất. Tuy nhiên có thể có thứ gì đó bị hỏng. Nếu đúng như vậy, hãy thử cài đặt cửa sổ sạch (vmware). Bằng cách đó bạn có thể viết ra mọi thứ bạn đang làm để giải thích cho họ các bước để tái tạo vấn đề này. – wimh
Cảm ơn, Wimmel. Vâng, đó là những gì tôi đang nghĩ tôi sẽ làm hôm nay. Và, tôi cũng liên lạc với các bên thứ ba. Nhân tiện, một điều tôi bỏ qua là có một thành phần thứ ba - một thư viện được liên kết tĩnh (.lib) từ một bên thứ ba khác. Nó bao gồm các clib. –
(giới hạn ký tự ngớ ngẩn!) ... và vì vậy tôi buộc phải xây dựng myProj.dll với/MT (d) (một lần nữa, với VS2005). –