onnxruntime
1fb03cc4 - Fix DllImport library names for case-sensitive filesystems (#26415)

Commit
45 days ago
Fix DllImport library names for case-sensitive filesystems (#26415) On case-sensitive filesystems (Windows with WSL, developer mode, or per-directory case sensitivity), DllImport fails to load native libraries due to relying on .NET's automatic platform-specific extension/prefix addition, which can produce incorrect casing. ## Changes - **NativeMethods.shared.cs**: Changed desktop platform library names from `"onnxruntime"` to `"onnxruntime.dll"` and `"ortextensions"` to `"ortextensions.dll"` - Explicitly specifying extensions ensures consistent behavior across case-sensitive and case-insensitive filesystems - Android/iOS platform-specific names unchanged ## Impact **Windows**: No changes required - libraries already named `onnxruntime.dll` **Linux/macOS**: Native packaging may need updates to provide `onnxruntime.dll` in runtime folders (either as actual filename or symlink to `libonnxruntime.so`/`libonnxruntime.dylib`) ```csharp // Before (relied on automatic extension addition) internal const string DllName = "onnxruntime"; // After (explicit extension for consistency) internal const string DllName = "onnxruntime.dll"; ``` Fixes #23509 <!-- START COPILOT CODING AGENT SUFFIX --> <details> <summary>Original prompt</summary> > > ---- > > *This section details on the original issue you should resolve* > > <issue_title>Does not work on case-sensitive filesystems</issue_title> > <issue_description>### Describe the issue > > Library does not work on case-sensitive filesystems. We get: > > ``` > Unhandled exception. System.TypeInitializationException: The type initializer for 'Microsoft.ML.OnnxRuntime.NativeMethods' threw an exception. > ---> System.EntryPointNotFoundException: Unable to find an entry point named 'OrtGetApiBase' in DLL 'onnxruntime'. > at Microsoft.ML.OnnxRuntime.NativeMethods.OrtGetApiBase() > at Microsoft.ML.OnnxRuntime.NativeMethods..cctor() > --- End of inner exception stack trace --- > at Microsoft.ML.OnnxRuntime.SessionOptions..ctor() > at Microsoft.ML.OnnxRuntime.InferenceSession..ctor(String modelPath) > at Program.<Main>$(String[] args) in Z:\temp\onnxtest\Program.cs:line 1 > ``` > > Probably due to a mistyped filename somewhere. > > ### To reproduce > > Create new C# project, use this Program.cs: > > ``` > new Microsoft.ML.OnnxRuntime.InferenceSession(""); > ``` > > > ### Urgency > > _No response_ > > ### Platform > > Windows > > ### OS Version > > Microsoft Windows [Version 10.0.19045.6332] > > ### ONNX Runtime Installation > > Released Package > > ### ONNX Runtime Version or Commit ID > > 1.22.1 > > ### ONNX Runtime API > > Other / Unknown > > ### Architecture > > X64 > > ### Execution Provider > > Other / Unknown > > ### Execution Provider Library Version > > _No response_</issue_description> > > ## Comments on the Issue (you are @copilot in this section) > > <comments> > <comment_new><author>@snnn</author><body> > I checked the code, still do not have much clue. We didn't specify the extension name. Maybe it was added by the .net runtime. > > https://github.com/microsoft/onnxruntime/blob/main/csharp/src/Microsoft.ML.OnnxRuntime/NativeMethods.shared.cs#L831</body></comment_new> > <comment_new><author>@snnn</author><body> > > Maybe we should just specify explicit extensions then in DllImport > > That might be the easiest fix. Would like to submit a PR?</body></comment_new> > <comment_new><author>@snnn</author><body> > Don't close it.</body></comment_new> > </comments> > </details> - Fixes microsoft/onnxruntime#26129 <!-- START COPILOT CODING AGENT TIPS --> --- 💬 We'd love your input! Share your thoughts on Copilot coding agent in our [2 minute survey](https://gh.io/copilot-coding-agent-survey). --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: snnn <856316+snnn@users.noreply.github.com> Co-authored-by: Changming Sun <chasun@microsoft.com>
Author
Parents
Loading