Có sai khi ghim user32.dll trên Windows 64 bit, từ ứng dụng 64 bit không? Tôi đã làm điều này thành công một số lần và không bao giờ có một lỗi, nhưng nó có vẻ mâu thuẫn. Tôi có nên tìm user64.dll để thay thế không?C# PInvoking user32.dll trên hệ thống 64 bit
24
A
Trả lời
30
Tên user32.dll
gây hiểu lầm. Đó là phiên bản 64 bit của user32.dll
mà bạn đang gọi. Phiên bản 64 bit có tại %windir%\System32\user32.dll
.
Phiên bản 32 bit được bao gồm để tương thích với các ứng dụng 32 bit. Nó nằm ở %windir%\SysWOW64\user32.dll
. Bạn có thể kiểm tra chúng bằng cách sử dụng tiện ích dumpbin
:
System32 \ user32.dll:
FILE HEADER VALUES
8664 machine (x64)
SysWOW64 \ user32.dll:
FILE HEADER VALUES
14C machine (x86)
0
Không có user64.dll vì lý do chính xác cùng bạn chỉ cần mô tả, chương trình .net có thể bất khả tri với kiến trúc CPU nên mã tương tự cần phải làm việc trên x86 và x64.
Nếu bạn đưa chương trình của bạn lên nền tảng x86, nó sẽ vẫn chạy mà không có bất kỳ sửa đổi nào.
Tôi đoán rằng khi họ đặt tên user32.dll họ không có những kịch bản trong tâm trí.
Các vấn đề liên quan
- 1. NCover trên hệ thống 64 bit
- 2. Giao diện Native Java 32 bit dll trên hệ thống 64 bit
- 3. Biên soạn trên hệ thống 64 bit cho hệ thống 32 bit - khả năng tương thích
- 4. Tại sao Windows 64 vẫn sử dụng user32.dll?
- 5. DllImport user32 vs user32.dll
- 6. Chạy dll 32 bit trên máy 64 bit trong java
- 7. Tại sao __sync_add_and_fetch hoạt động với biến 64 bit trên hệ thống 32 bit?
- 8. Tại sao QtCreator/MSVC liên kết hệ thống DLL 64 bit với ứng dụng 32 bit của tôi?
- 9. Trong các hệ thống 64 bit, một cột 32 bit chiếm ít không gian hơn một bit 64 bit?
- 10. Chuyển đổi 32 bit dll sang 64 bit dll
- 11. Không thể tìm thấy crtn.o, liên kết mã 32 bit trên hệ thống 64 bit
- 12. Biên dịch nhị phân 32 bit trên hệ thống 64 bit
- 13. Viết giá trị đăng ký trong hệ thống 64 bit
- 14. Ứng dụng 32 bit hoặc 64 bit trên hệ điều hành 64 bit?
- 15. SDK Android 32 bit hoặc 64 bit trên hệ điều hành Windows 64 bit?
- 16. kiểm tra xem tệp tồn tại trên hệ thống 64 bit bằng File.Exists
- 17. Microsoft.Office.Interop.Excel không hoạt động trên 64 bit
- 18. Phát hiện hệ thống 64 bit từ trình cài đặt WIX 32bit
- 19. Truy cập đường dẫn đích từ tệp lối tắt trên hệ thống 64 bit bằng ứng dụng 32 bit
- 20. Nhập 32 bit dll trong 64 bit .Net application
- 21. C Liên kết con trỏ 64 bit
- 22. Reading từ Excel: Lỗi Microsoft.Jet.OLEDB.4.0 trên hệ thống 64 bit
- 23. API giao tiếp nối tiếp cho Java trên hệ thống 64 bit (tương tác modem)
- 24. con trỏ C++ trên máy 64 bit
- 25. Boost.Test trên Windows 64 bit
- 26. .Net WinForm System Beep trên hệ điều hành 64 bit
- 27. chạy nhị phân 32 bit trên máy 64 bit
- 28. Hệ điều hành iPhone 64 bit hay 32 bit?
- 29. Delphi XE2: Gỡ lỗi dll 64 bit qua ứng dụng 64 bit
- 30. Eclipse 32 bit chạy trên 64 bit JVM
Bây giờ nó gây hiểu nhầm, nhưng ban đầu nó được đặt tên như vậy để phân biệt giữa 16 và 32 bit phải không? Nhưng họ khó có thể thay đổi tên, điều đó sẽ phá vỡ quá nhiều thứ ... –
Vâng. Tôi nhớ rõ ràng lỗi bảo vệ chung do "USER.EXE" gây ra trong Windows 3.1 trong những ngày thơ ấu của tôi. –
Gotta yêu cách thư mục System32 vẫn được gọi là trong cửa sổ 64 bit :-) – Justin