2010-04-23 37 views
27

Ứng dụng của tôi được xây dựng dưới dạng ứng dụng x64. Sau khi chuyển sang VS2010, tôi nhận được some problems dường như có liên quan đến một số không phù hợp x64/x86 trong các tệp tham chiếu dll. Bây giờ tôi đang chuyển sang mục tiêu .NET4 và tôi còn nhận được nhiều hơn similar problems.Ứng dụng x64 có thể sử dụng các cụm x86 - và ngược lại không?

Câu hỏi của tôi là: Tôi cần đề phòng gì về trộn x64 và x86. Nó có thể được thực hiện ở tất cả? Tôi nghĩ rằng x64 ứng dụng sẽ có thể sử dụng x86 dlls mà không có vấn đề. Không? Còn cách khác thì sao? Ứng dụng x86 có thể tham chiếu một dll x64 - miễn là nó đang được chạy trên nền tảng x64 không? Những cạm bẫy tôi cần phải biết là gì?

Trả lời

30

Không, quy trình 64 bit chỉ có thể tải các tệp DLL 64 bit và quy trình 32 bit chỉ có thể tải các tệp DLL 32 bit. Điều bạn có thể nghĩ đến là hệ điều hành 64 bit có thể chạy các quy trình 32 bit.

Vấn đề chính với .NET là - trước VS2010 - dự án thực thi được mặc định là "AnyCPU" có nghĩa là nó sẽ tải ở định dạng "gốc" của hệ điều hành đang chạy (vì vậy 32 bit cho 32 bit các phiên bản Windows và 64 bit cho các phiên bản Windows 64 bit). Vấn đề với điều đó là nếu bạn đã thử nghiệm ứng dụng của mình trên Windows 32 bit (nói) thì nó có thể bị hỏng nếu bạn nạp các tệp DLL 32 bit và cố chạy trên Windows 64 bit.

Trong VS2010, chúng mặc định tất cả các dự án thực thi là "x86" (tức là, 32-bit) theo mặc định (phần lớn) giảm thiểu vấn đề.

+0

Làm rõ! Cám ơn! Vâng - Tôi biết hệ điều hành 64bit có thể chạy các quy trình 32 bit. Và tôi chỉ giả định cùng một nguyên tắc được áp dụng trong các quy trình. Hãy xem nếu tôi có thể sửa mã của tôi ngay bây giờ mà tôi biết điều này .. Tôi nghĩ rằng tôi sẽ thay đổi mọi thứ để x86 .. – stiank81

5

Bạn có thể chạy các ứng dụng x86 trên hệ điều hành 64 bit bằng cách sử dụng mô phỏng WOW32. Một số cạm bẫy mà tôi gặp phải - bạn không thể kết hợp và khớp với 32/64 trong cùng một quy trình. Vì vậy, nếu bạn có ý định chạy IIS như 64 tất cả các hội đồng cần phải được 64 nếu không bạn sẽ phải chạy Trong chế độ 32 bit. 64 bit giúp một số ứng dụng nhiều hơn những ứng dụng khác. Chạy phiên bản 64 bit của SQL sever cung cấp một số lợi thế so với phiên bản 32 bit, lợi thế lớn nhất là yo có thể cài đặt hơn 4 GB bộ nhớ trên máy chủ đích và SQL sẽ có thể sử dụng hơn 4 GB bộ nhớ. Nó không có lợi cho IIS nhiều vì IIS thường không thể sử dụng nhiều hơn 3 gb bộ nhớ. Lời khuyên của tôi là đảm bảo máy chủ/phiên bản/phiên bản SQL của bạn là 64 nếu có thể. Nó sẽ không tạo ra a. Khủng khiếp lớn nếu các máy chủ khác là 64 nhưng thường dễ dàng hơn khi làm việc và tìm các phiên bản 32 bit.

+0

Không thực sự những gì tôi hỏi, nhưng hữu ích anyway. Cám ơn! – stiank81

Các vấn đề liên quan