2010-02-15 49 views
28

Có cách nào để tải thư viện DLL 32 bit (một cái gì đó có cùng cách sử dụng như LoadLibrary) không Tôi muốn sử dụng hàm đó cùng với GetProcAddress.Tải thư viện DLL 32 bit trong ứng dụng 64bit

Tôi đã xem WOW, nhưng dường như nó không cung cấp chức năng. Các chức năng nên tồn tại, kể từ khi các công cụ như DependencyWalker có thể đọc các biểu tượng của một dll 32bit mặc dù 64bits của nó.

cảm ơn

+0

Điều này được trả lời ở đây: http://stackoverflow.com/questions/128445/calling-32bit-code-from-64bit-process. Câu trả lời của John Knoeller dưới đây cũng chính xác. –

+0

https://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/ – Ampere

+0

@John B. Lambe Tiêu đề của bài đăng này rõ ràng hơn bài bạn viết liên kết với những người đang tìm kiếm điều exe-call-dll. – ebk

Trả lời

40

Xin lỗi, nhưng bạn chỉ có thể tải một DLL 32 bit vào quy trình 64 bit khi bạn tải dll làm tệp dữ liệu. Bạn không thể thực thi mã. http://support.microsoft.com/kb/282423

Microsoft khuyên bạn nên sử dụng interprocess COM để sử dụng mã 32 bit với ứng dụng 64 bit. Đây là một bài viết giải thích về quy trình http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/ Không thú vị của nó.

+0

Cập nhật liên kết cho bài viết: http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/ Xem thêm http://stackoverflow.com/questions/128445/gọi-32bit-code-từ-64bit-process –

2

Có sự khác biệt giữa việc đọc mã thực thi và thực thi 32 bit trong thực thi 32 bit. Tôi không tin rằng cửa sổ cung cấp bất kỳ chức năng để làm điều đó.

Cách duy nhất bạn có khả năng có thể làm điều đó là tạo một quy trình 32 bit tải dll và sau đó thực hiện truyền thông interprocess để chuyển kết quả giữa hai quy trình.

0

Nếu tất cả các bạn đang muốn làm là có được nguồn lực từ nó, bạn có thể tải như một datafile:

LoadLibraryEx(exeName, NULL, LOAD_LIBRARY_AS_DATAFILE); 

Sau đó gọi FindResource như bình thường.

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