Tôi có một DLL rất đơn giản được viết bằng C++ không được quản lý mà tôi truy cập từ ứng dụng của mình. Gần đây tôi chuyển sang Visual Studio 2010, và DLL đã đi từ 55k xuống 35k mà không có thay đổi mã, và bây giờ nó sẽ không còn tải trong Windows 2000. Tôi không thay đổi bất kỳ cài đặt mã hoặc trình biên dịch nào. Tôi có thiết lập xác định cho 0x0500, bao gồm hỗ trợ Windows 2000. Có ai khác chạy vào điều này, hoặc có bất kỳ ý tưởng nào về những gì tôi có thể làm không?Sự cố khi sử dụng Visual Studio 2010 đã biên dịch C++ DLL trong Windows 2000
Trả lời
Visual Studio 2010 cannot build binaries that run on Windows 2000. Nó thậm chí còn tệ hơn thế, they won't run on Windows XP RTM or Windows XP Service Pack 1 either. Điều này là do thư viện runtime của VS2010 yêu cầu API EncodePointer không có sẵn cho đến SP2.
Dường như bạn đang mắc kẹt khi xây dựng với cài đặt VS2008 nếu bạn muốn hỗ trợ các phiên bản trước của Windows. Bạn có thể di chuyển toàn bộ dự án của bạn sang Visual Studio 2008 hoặc bạn có thể nhắm mục tiêu các bộ công cụ vc90 (Visual Studio 2008) từ bên trong các dự án Visual Studio 2010 của bạn. Để biết thêm chi tiết về phương pháp thứ hai, hãy xem anwser này cho câu hỏi liên quan của tôi here.
Cảm ơn bạn đã liên kết, đó là một số tin tức đáng tiếc. :( –
@Jon Tackabury: Tôi biết - Tôi thực sự thực sự muốn sử dụng 'auto': ( –
Tôi chỉ không muốn có VS 2008 và 2010 cả hai cài đặt. :( –
Giải pháp có thể là cung cấp EncodePointer (và DecodePointer, rõ ràng) trong một lib riêng biệt và liên kết ưu tiên cho KERNEL32.LIB. Đây là một kịch bản được hỗ trợ hoàn hảo. Trong quá khứ, libs như "LIBCTINY" và "UNICOWS" đã sử dụng cơ chế liên kết ưu tiên này để thêm/thay thế được chọn nhưng không phải tất cả các chức năng từ một lib khác.
Chính xác, không may Tôi không xem câu trả lời của bạn trước khi viết câu trả lời của riêng tôi trong chủ đề được liên kết, nếu không tôi sẽ không dành nhiều thời gian erimenting với nó. Tuy nhiên, như câu trả lời của tôi có sẵn sàng để sử dụng và kiểm tra mã, tôi hy vọng nó có thể được sử dụng một số - xem http://stackoverflow.com/questions/2484511/can-i-use-visual-studio-2010s-c-compiler -with-visual-studio-2008s-c-runtime/3502056 # 3502056 – Suma
Một lưu ý quan trọng: bạn không cung cấp EncodePointer/DecodePointer (các hàm từ DLL) trực tiếp. Bạn cần phải thay thế các vectơ nhập của chúng, đó là những gì được giải quyết khi thích .lib. Chúng được gọi là _imp__FunctionName. – Suma
- 1. Visual Studio 2010 và Windows 2000
- 2. Sử dụng .dll trong Visual Studio 2010 C++
- 3. Visual Studio 2012 bản địa C++ DLL biên dịch x86
- 4. Sự cố biên dịch trong Visual Studio 12 Professional với dự án C#
- 5. System.OutOfMemoryException khi sử dụng Visual Studio 2010
- 6. Visual Studio 2010 C++ biên dịch vấn đề
- 7. Giải pháp Visual Studio 2010 gặp sự cố khi mở
- 8. Tôi không thể biên dịch trong Visual Studio 2010
- 9. Cách biên dịch các dự án VC++ 2010 bằng Visual Studio 2012 và Windows SDK 7.1
- 10. Thiết lập mex để sử dụng trình biên dịch Visual Studio 2010
- 11. DLL tham chiếu không tải trong Visual Studio 2010
- 12. Sự cố khi tải mã c đã biên dịch trong R x64 bằng dyn.load
- 13. Mã biên dịch trong Visual Studio 2010 nhưng không nên biên dịch ở tất cả
- 14. Sự cố T4 khi biên dịch chuyển đổi
- 15. Lỗi kiểu CSS trong Visual Studio khi biên dịch
- 16. Sử dụng Inconsolata trong Visual Studio 2010
- 17. GTK # trong Visual Studio 2010
- 18. Sử dụng trình biên dịch khác nhau trong Visual Studio
- 19. Visual Studio tạo sự cố với "Sự kiện ReflectionOnlyAssemblyResolve"
- 20. Làm cách nào để xem mã máy hoặc mã byte đã biên dịch cho hàm C++ trong Visual Studio 2010?
- 21. Biên dịch cho x64 với Visual Studio?
- 22. visual studio 2010 không thể bắt đầu chương trình .dll
- 23. Java trong Visual Studio 2010?
- 24. Làm thế nào để biên dịch trong Visual Studio 2010 cho Linux
- 25. Làm cách nào để biên dịch cho Windows XP trong windows 7/visual studio 2008
- 26. Làm thế nào để sử dụng OpenFileDialog trong C# trong Visual Studio 2010
- 27. Visual Studio 2010 + Khung mục tiêu 3.5. Phiên bản nào của trình biên dịch C# sẽ được sử dụng?
- 28. Sử dụng Visual C++ DLL trong Borland C cũ?
- 29. Tăng tốc biên dịch và kiểm tra đơn vị trong Visual Studio 2010/Resharper/ASP.NET MVC
- 30. Buộc CMake sử dụng trình biên dịch C++ cho tệp C với Visual Studio
bản sao có thể có của [Tôi có thể sử dụng trình biên dịch C++ của Visual Studio 2010 với Thư viện thời gian chạy C++ của Visual Studio 2008 không?] (Http://stackoverflow.com/questions/2484511/can-i-use-visual-studio-2010s-c -compiler-with-visual-studio-2008s-c-runtime) – Suma