How to Resolve Module Loading Path Issues When Packaging OBS-Based Applications into a Single EXE?

Roll

New Member
Hello OBS Community,

I'm new to OBS development and currently working on a personal project. My goal is to create a simple application that uses libobs for replay functionality. I'm still learning the ins and outs of OBS, so please forgive me if I overlook something obvious!

I’m trying to package my application into a single EXE file using Costura.Fody to embed all dependencies, including the OBS modules and plugins (DLL files). The main challenge I'm facing is with module loading.

In my code, I usually set the module path like this:

C#:
obs_add_module_path("./obs-plugins/64bit/", "./data/obs-plugins/%module%/");
obs_load_all_modules();

However, after embedding the DLLs inside the EXE, there are no physical files in the obs-plugins directory. This causes obs_load_all_modules() to fail since it cannot locate the required plugins and modules.

I would greatly appreciate any guidance on the best way to approach this. Ideally, I’d like to avoid managing external DLLs and keep everything contained within a single EXE file, if feasible.

Thank you for your help!

Additional Details:
  • OBS_STUDIO_VERSION=30.1.1
  • Goal: Single EXE distribution for personal use.
  • OBS Use Case: Basic replay functionality using libobs.
  • Experience Level: Beginner with OBS development.
  • Here are the build options I'm using for compiling OBS with CMake:
    • Bash:
      cmake -S . -B "%OBS_INSTALL_PREFIX%" --preset windows-x64 ^
          -DENABLE_BROWSER:BOOL=OFF ^
          -DENABLE_VLC:BOOL=OFF ^
          -DENABLE_UI:BOOL=OFF ^
          -DENABLE_VST:BOOL=OFF ^
          -DENABLE_AJA:BOOL=OFF ^
          -DENABLE_SCRIPTING:BOOL=OFF ^
          -DCOPIED_DEPENDENCIES:BOOL=OFF ^
          -DCOPY_DEPENDENCIES:BOOL=ON ^
          -DBUILD_FOR_DISTRIBUTION:BOOL=ON
Looking forward to any tips or suggestions!
 
Top