Omniverse Extension for custom USD Schema: blocked with NV_USD version & boost DLL error

Hello! I’m new-ish to Omniverse and USD.

My goal is to build a custom kit app/extension to do process gaussian splat data.
Gaussian Splats are point clouds with many parameters per vertex, and my step #1 is to create a USD schema to represent them, so USD workflows can manipulate their values.

My research led me to follow this older forum post: How to introduce a new usd schema that built in C++ dll into omniverse and some extension/schema code samples to the point I got the following structure in my project:

So far so good, (I’m working on Windows btw), executing
.\link_app.bat
creates the _app shortcut successfully, pulling it from my Omniverse Code 2023.1.1 install

.\build.bat
builds the extension into _install successfully, generating the files for the usd schema as well as compiling gaussianSplatSchema.dll and gaussianSplatSchema.lib successfully, and putting them in an extension folder structure for “mycompany.gaussianSplatSchema”

However, here’s where I hit a roadbump: trying to test my extension with the following:
_app\omni.code.bat --ext-folder _install/windows-x86_64/release --enable mycompany.gaussianSplatSchema
brings up the following error:

2023-12-23 01:15:17 [1,301ms] [Error] [omni.ext.plugin] Could not load the dynamic library from c:/.../_install/windows-x86_64/release/mycompany.gaussianSplatSchema/GaussianSplatSchema/lib/gaussianSplatSchema.dll. 
Error: The specified module could not be found.
 (note that this may be caused by a dependent library)
[mycompany.gaussianSplatSchema] (python printing a startup hello world)
2023-12-23 01:15:17 [1,308ms] [Error] [omni.ext._impl.custom_importer] Failed to import python module GaussianSplatSchema. Error: DLL load failed while importing _gaussianSplatSchema: The specified module could not be found.. Traceback: (etc...)

So I picked up the very useful utility Dependencies from GitHub - lucasg/Dependencies: A rewrite of the old legacy software "depends.exe" in C# for Windows devs to troubleshoot dll load dependencies issues. to investigate the DLL dependencies of my gaussianSplatSchema.dll file which clearly exists at the specified path.

I found that there are multiple missing ones: all the usd_*.dll and boost_python310-vc142-mt-x64-1_78.dll.
I expect the USD dlls should be linked properly when importing the extension into an omniverse app, so it’s probably NBD. However I did a search for the boost DLL on my drive to see what uses it, and I only found:
C:\packman-repo\chk\usd.py310.windows-x86_64.usdview.release\0.23.05-tc.47+v23.05.b53573ea\lib
C:\Omniverse\Library\usdview-0.23.11\lib\boost_python310-vc142-mt-x64-1_78.dll

Widening my search for boost_python3*.dll pulled up a lot more versions of the boost DLL, the most common one having the same name but ending with 1_76 instead of 1_78. All my apps downloaded from Omniverse Launcher in particular have 1_76 (code, kit, create, etc.) with the exception of usdview.

At this point I suspect what I need is to build my extension against a version of NV-USD that includes the boost 1_76 DLL. Going back to my repo, the NV-USD it uses is usd.py310.windows-x86_64.usdview.release version 0.23.05-tc.47+v23.05.b53573ea as indicated by deps/usd-deps.packman.xml:

<project toolsVersion="5.6">
  <dependency name="nv-usd" linkPath="../_build/usd-deps/nv-usd/${config}">
    <package name="usd.py310.${platform}.usdview.${config}" version="0.23.05-tc.47+v23.05.b53573ea" />
  </dependency>
  <dependency name="python" linkPath="../_build/usd-deps/python">
    <package name="python" version="3.10.13+nv1-${platform}" />
  </dependency>
</project>

Note that the above is identical (because copied from) the configuration found in usd-plugin-samples: usd-plugin-samples/deps/usd-deps.packman.xml at main · NVIDIA-Omniverse/usd-plugin-samples · GitHub

So here’s my questions:

  1. It looks like I’m using the wrong nv-usd package, but how can I find what package name and version I need for the 1_76 version of the boost DLL that would be compatible with my Omniverse apps?
  2. This seems very fragile as the boost DLL file contains multiple version numbers and seems likely to break with future Omniverse app updates. How can I future proof things?
  3. This all seems really, really involved just to obtain API support for extra fields for a custom data structure in USD. Is that what typical USD development looks like, or did I overlook a simpler workflow?

[edit: I should mention that I run into the very same problem trying to load the usd schema extension built from the sample: GitHub - NVIDIA-Omniverse/usd-plugin-samples: USD schema extension samples, build tools, and sample kit extensions that use those schema extensions]

Thank you!
-Anthony