# ArgumentError: Invalid argument(s): Failed to load dynamic library 'libnative.so': dlopen failed: library "libnative.so" not found

- **ID:** `flutter/dart-ffi-library-not-found`
- **Domain:** flutter
- **Category:** module_error
- **Verification:** ai_generated
- **Fix Rate:** 80%

## Root Cause

A Dart FFI binding references a native shared library that is not bundled with the app or not placed in the correct directory for the target platform (Android jniLibs, iOS Frameworks, or Linux/MacOS library paths).

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| Flutter 3.7 | active | — | — |
| Dart 3.0 | active | — | — |
| Android 12 | active | — | — |
| iOS 15 | active | — | — |
| Linux | active | — | — |

## Workarounds

1. **Place the shared library in the correct platform-specific directory: android/app/src/main/jniLibs/<abi>/ for Android, or use a Flutter plugin with native code.** (85% success)
   ```
   Place the shared library in the correct platform-specific directory: android/app/src/main/jniLibs/<abi>/ for Android, or use a Flutter plugin with native code.
   ```
2. **Use the ffi package's DynamicLibrary.process() to load symbols from the main process if the library is linked at compile time.** (70% success)
   ```
   Use the ffi package's DynamicLibrary.process() to load symbols from the main process if the library is linked at compile time.
   ```

## Dead Ends

- **** — Assets are not loaded as shared libraries; FFI requires the library to be in the system library path or bundled as a native dependency. (80% fail)
- **** — FFI resolves library paths from the system loader, not the Dart script's location; relative paths are platform-dependent and often fail. (70% fail)
- **** — On mobile platforms (Android/iOS), environment variables are not accessible to the app process; this only works on desktop. (60% fail)
