Quick question about bundling DLL files

Here you can find everything you need to know about Dll-Files. You can also share your knowledge regarding the topic.

Moderators: DllAdmin, DLLADMIN ONLY

Post Reply
sherigreene
Posts: 1
Joined: 01 Oct 2024, 08:02

Quick question about bundling DLL files

Post by sherigreene »

Hello!

I have a small question; I have this executable file,

program.exe it attempts to load the DLL libpq.dll from the path, is there a way to force it to load it from the executables directory?

Is there a way to make my Rust program look for the DLLs it needs in the location of the executable file instead of my path?

Project Dir
|- Program.exe
|- libpq.dll <-- Program.exe loads this instead of one in the path.

Like this ^^^ is this possible?

Bellachicago
Posts: 1
Joined: 03 Apr 2025, 07:56

Re: Quick question about bundling DLL files

Post by Bellachicago »

1. Set the DLL Path in Code
You can modify the environment variable PATH at runtime in your Rust code to include the directory of the executable. Here's how you can do it:

Copy
use std::env;
use std::path::PathBuf;

fn main() {
// Get the current executable's directory
let exe_path = std::env::current_exe().unwrap();
let exe_dir = exe_path.parent().unwrap();

// Set the PATH environment variable to include the executable's directory
let mut path = env::var("PATH").unwrap();
path.push_str(&format!(";{}", exe_dir.display()));
env::set_var("PATH", path);

// Now you can load the DLL
// Your code to load the library goes here
}
2. Place DLL in the Same Directory
By default, Windows will look for DLLs in the same directory as the executable before searching the system PATH. So, simply placing libpq.dll in the same directory as program.exe should work without additional code.

3. Use a Manifest File
You can create a manifest file for your executable that specifies the DLL search path. This method is more complex and less common but can be used if needed.

4. Modify the Build Configuration
If you are compiling your Rust project, ensure that the DLL is copied to the output directory (where the executable is located) during the build process. You can do this by specifying the DLL in your Cargo.toml or using build scripts.

Post Reply