Có cách nào để có DLL cụ thể được tham chiếu bằng chữ ký P/Invoke (DllImport) phụ thuộc vào kiến trúc CPU không?Kiến trúc CPU Độc lập P/Gọi: DllName hoặc đường dẫn có thể là "động" không?
Tôi đang làm việc trên một ứng dụng tải một số lượng lớn các chữ ký phương thức từ một dll gốc từ một nhà cung cấp bên thứ ba, trong trường hợp này giao diện người dùng-không gian DLL tới một phần cứng. Nhà cung cấp đó hiện đã bắt đầu cung cấp cả hai phiên bản x86 và x64 của DLL bây giờ, và tôi nghĩ rằng ứng dụng của tôi sẽ được hưởng lợi từ việc chạy như một quá trình 64bit. Ngoại trừ một DLL này, mọi thứ đều là mã .NET, vì vậy việc xây dựng thành "CPU bất kỳ" sẽ hoạt động.
Tất cả các chữ ký của phương thức trong DLL gốc đều giống nhau trên 64bit, tuy nhiên tên của DLL khác nhau (Foo.dll so với Foo_x64.dll). Có cách nào thông qua hoặc P/Invoke chữ ký hoặc app.config mục tôi có thể nhận được nó để chọn DLL để tải dựa trên kiến trúc CPU đang chạy?
Nếu thay vì các tên DLL khác nhau, tên này giống với tên trong các thư mục khác nhau, có mở bất kỳ tùy chọn nào khác không? NB: Bởi vì điều quan trọng là phiên bản DLL không gian người dùng này khớp với trình điều khiển hạt nhân đã cài đặt cho phần cứng, DLL không đi kèm với ứng dụng của chúng tôi, nhưng thay vào đó chúng tôi phụ thuộc vào trình cài đặt của nhà cung cấp thư mục trong% PATH%.
Có thể trùng lặp http: // stackoverflow.com/questions/23215518/target-32-bit-hoặc-64-bit-native-dll-tùy-on-môi trường –
Tôi nghĩ rằng sự trùng lặp là cách khác xung quanh, cho câu hỏi này là bốn năm cũ hơn một :) – Cheetah