2010-02-21 25 views
6

Tôi đã hỏi trước đây, How to determine the target of a symbolic link or Reparse Point? ... và nhận được an answer that suggested the use of the Win32 function GetFinalPathNameByHandle, một chức năng có sẵn đầu tiên trên Vista.Điều gì sẽ xảy ra khi tôi DllImport một chức năng không có sẵn trên nền tảng thời gian chạy?

Điều gì sẽ xảy ra nếu tôi xây dựng .NET Assembly và sau đó cố gắng chạy nó trên WinXP, hoặc WS2003, không có chức năng GetFinalPathNameByHandle? Có ngoại lệ thời gian chạy hay không, và nếu có, thì cái nào? Có cách nào để tôi xử lý trường hợp đó trong mã ứng dụng không?

Trả lời

7

Bạn sẽ nhận được EntryPointNotFoundException khi bạn gọi phương thức.

Nếu toàn bộ tệp DLL không tồn tại, bạn sẽ nhận được DllNotFoundException thay thế.

+0

Và những ngoại lệ đó là bình thường, có thể bắt được không? – Cheeso

+1

Có. Điều gì làm cho bạn nghĩ rằng họ sẽ không được? – user200783

+0

Sử dụng LoadLibrary, GetProcAddress, FreeLibrary có thể tránh ngoại lệ. Bạn không chắc chắn nếu điều đó có ý nghĩa nếu bạn không thể hỗ trợ chức năng này. –

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