Native libraries and runtime dependencies
Native dependencies must match the process's architecture, operating-system ABI and runtime requirements, and some are loaded only when a feature is used.
A server can combine managed application code with native executables or libraries. Media processing, database access and hardware interfaces can use native components.
The native component has to fit the process and platform that load it. A file being present in a directory is not enough.
A feature can exercise a later loading path
Imagine a server that starts successfully and displays its library. A playback request then invokes a native media component whose architecture does not match the running process.
Startup success is consistent with that later failure if startup did not load or execute the component. The same pattern can occur when only a particular codec or hardware interface needs an additional dependency.
| Requirement | Example mismatch |
|---|---|
| Instruction-set architecture | ARM64 process and x86-64 library |
| Process binary environment | 32-bit component and 64-bit process without a supported bridge |
| Operating-system ABI | Linux binary used as a Windows native library |
| Runtime/library environment | Required native symbol or version unavailable |
| Device interface | User-space library exists but its driver/device path is unavailable |
A managed assembly and a native library therefore need different compatibility evidence. The server's language does not remove the native component's platform contract.
The loader searches and resolves symbols
The operating system and runtime apply loading rules: finding the component, opening its dependencies and resolving the expected functions. A “not found” error can refer to a dependency of the named file, rather than that named file itself.
A symbol error can mean that a file was found but does not provide the expected API or ABI. A device-access error can occur later still, after the library loaded successfully.
For .NET packages, runtime identifiers such as linux-x64 and linux-arm64 help select platform-specific assets. They do not promise that every native prerequisite or driver is bundled.
Preserve the intended software combination
Use the supported server package and documented dependency arrangement for the platform. Replacing a library with a similarly named file can change the ABI or supported behavior without satisfying the missing requirement.
For Emby diagnostics, retain the server version, architecture, invoked feature and exact loading or device error. Those facts identify which compatibility layer failed more precisely than a general statement that “the server works except for transcoding.”
See Also
- x86-64 architecture and compatible server software
- ARM64 architecture and native software compatibility
- Docker images, running containers and writable layers