cuốn sách gpt4 ai đã làm

c++ - GetModuleFileName 在 Win 7/Win 10 上的不同行为

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 10:39:13 31 4
mua khóa gpt4 Nike

Tôi đang sử dụng thư viện libeay32.dll/ssleay32.dll trong ứng dụng của mình để hỗ trợ https. Thư viện tải thành công trên Windows 7 (không phải thông qua ứng dụng của tôi, thông qua thư viện Qt), nhưng tôi gặp lỗi SSL trên Windows 10.

Tôi đã viết một ứng dụng nhỏ để đảm bảo rằng phiên bản thư viện chính xác đã được tải (tức là không được tải từ PATH) và nhận được kết quả thú vị.

đây là mã

HMODULE hSsleay = LoadLibrary("ssleay32.dll");
DWORD pathSize = GetModuleFileName(hSsleay, ssleayPath, pathSize);
nếu (pathSize) {
std::cout << "Đường dẫn đã phát hiện mô-đun ssleay32.dll = " << ssleayPath << '\n';
}
khác {
std::cout << "Lỗi phát hiện mô-đun ssleay32.dll LastError = " << GetLastError() << '\n';
}

Đầu ra trên Windows 7 x86 là

Đường dẫn được phát hiện của mô-đun ssleay32.dll = C:/Program Files/My Application/ssleay32.dll

Tuy nhiên, trên Windows 10 x64 thì

Đường dẫn được phát hiện của mô-đun ssleay32.dll = C:/Tệp chương trình (x86)/Ứng dụng của tôi/LibraryLocator.exe

trong đó LibraryLocator.exe là tên của ứng dụng thử nghiệm có chứa đoạn mã trên

câu trả lời hay nhất

GetModuleFileName() trong nó hMô-đun Trả về đường dẫn của quá trình gọi khi tham số được đặt thành NULL. TảiThư viện() Trả về NULL khi thất bại. Rõ ràng là bạn quan tâm đến TảiThư viện() Cuộc gọi không thành công (ví dụ: nếu EXE 32 bit của bạn cố tải phiên bản 64 bit của DLL hoặc không thể thực hiện được DLL được tìm thấy trong PATH Bởi vì bạn không chỉ định đường dẫn tuyệt đối). đang gọi điện GetModuleFileName() Bạn đã không xử lý lỗi trước đó.

Nếu Qt đã tải DLL cho bạn, bạn nên sử dụng GetModuleHandle() thay vì TảiThư viện().

Về c++ - Hành vi khác nhau của GetModuleFileName trên Win 7/Win 10, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/48091432/

31 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress