2011-12-28 36 views
8

Vì vậy, một thời gian trước, tôi đã điều tra một vấn đề mà tôi biết sẽ sớm xuất hiện. Chúng tôi có một DLL liên kết tới phiên bản 32 bit của một thư viện nhất định. Không có phiên bản x64 của thư viện này có sẵn cho chúng tôi và chúng tôi không có tùy chọn thực tế liên quan đến việc thay thế nó.Sử dụng một DLL 32 bit trong quy trình 64 bit qua COM

Khi tôi thực hiện điều tra ban đầu này, tôi đã tìm thấy một hoặc hai bài viết mô tả phương pháp mà theo đó quy trình 64 bit có thể sử dụng một DLL 32 bit (Windows) thông qua máy chủ COM "". Thật không may, tôi đã mất liên kết tôi đã lưu và hiện tôi đã tìm kiếm hơn một giờ mà không có may mắn.

Có ai ở đây quen thuộc với quy trình tôi mô tả không? Tôi không thể cho cuộc sống của tôi nhớ những câu thần chú tôi đã sử dụng để kéo lên kết quả chính xác trong một tìm kiếm và, tất nhiên, nó bây giờ là thời gian thực hiện. Cảm ơn trước vì bất kỳ trợ giúp nào mà các bạn có thể cung cấp, tôi sẽ tiếp tục tìm kiếm trong thời gian chờ đợi.

+0

Tôi cho rằng bạn có thể tìm thấy các liên kết của bạn trở lại bởi googling "những người đại diện COM" và " COM + lưu trữ ". –

+0

@ HansPassant: Đó là từ tôi cần. Cảm ơn. –

+0

(Chủ yếu là cho những người khác vấp vào câu trả lời) Hãy nhớ rằng làm điều này liên quan đến dữ liệu interprocess marshaling, có thể tốn kém - nó không phải là một viên đạn bạc tự động sửa chữa * tất cả * vấn đề. – snemarch

Trả lời

5

này có thể không đủ, nhưng nó có thể giúp bạn bắt đầu: Process Interoperability

Ngày 64-bit Windows, một máy chủ COM 32-bit out-of-quá trình có thể giao tiếp với một khách hàng 64-bit, và một máy chủ COM 64 bit ngoài quy trình có thể giao tiếp với máy khách 32 bit. Vì vậy, nếu bạn có một DLL 32-bit mà không phải là COM-nhận thức, bạn có thể bọc nó trong một máy chủ COM quá trình và sử dụng COM để sắp xếp các cuộc gọi đến và từ một quá trình 64-bit.

Accessing 32-bit DLLs from 64-bit code

Chuyển 32-bit Windows ứng dụng của bạn đến một máy 64-bit có thể có vấn đề nếu bạn có DLL 32-bit mà bạn không thể re-write. Mike Becker cho bạn biết cách bạn có thể truy cập các tệp DLL 32 bit từ mã 64 bit bằng các cơ chế IPC tích hợp ...

+0

Và đó là liên kết tôi đang tìm kiếm. Cảm ơn ngài. –

+0

Bạn được chào đón. Tôi đã có liên kết thứ hai được đánh dấu trang khi tôi cần :) – crashmstr

3

Client of Out-of-process Local Server là ví dụ về việc chạy COM. Nếu bạn đang chạy một máy chủ com trong quá trình khách hàng của bạn có thể là 64bit và máy chủ 32bit.

1

Bạn có thể tạo COM exe hoặc dịch vụ sẽ luôn chạy dưới dạng 32 bit. Bên trong exe 32 bit này, bạn có thể truy cập vào dll 32 bit của bạn liên kết tới các phiên bản 32 bit của thư viện.

Sơ đồ khối dưới đây giải thích những điều cơ bản

Hãy nhìn vào liên kết này để biết chi tiết:

http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/#more-355

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