Custom USD extension/plugin with UsdGeom type inheritance fails to link

Operating System:
Windows (11)
Linux
Kit Version:
107 (Kit App Template)
106 (Kit App Template)
105 (Launcher)
Kit Template:
USD Composer
USD Explorer
USD Viewer
Custom
GPU Hardware:
A series (Blackwell)
A series (ADA)
A series
50 series
40 series
30 series
GPU Driver:
Latest
Recommended (573.xx)
Other
Work Flow:

I’m creating a custom USD Extension/Plugin based on the usd samples repository.

Main Issue:

Everything compiles fine until I add an object which should inherit from xform. The attached

#usda 1.0
(
    subLayers = [
        @usdGeom/schema.usda@
    ]
)

over "GLOBAL" (
    customData = {
        string libraryName   = "customSchema"
        string libraryPath   = "./"
        string libraryPrefix = "CustomSchema"
    }
) {
}


class "MyXform" (
    inherits = </Xform>
    doc = """Defines a xform."""
) {}

Then I run build.bat and the following log is the result.

PS C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin> .\build.bat
INFO:usd-plugin-samples:Pulling dependencies for nv-usd 22.11 Python 3.10...
-- Building for: Visual Studio 17 2022
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.26100.
-- The CXX compiler identification is MSVC 19.29.30159.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Python3: C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/usd-deps/python/python.exe (found version "3.10.15") found components: Interpreter Development Development.Module Development.Embed
-- No generate directory provided, defaulting to C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/cmake/schema/generated
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting jinja2==3.1.4
  Downloading jinja2-3.1.4-py3-none-any.whl.metadata (2.6 kB)
Collecting MarkupSafe>=2.0 (from jinja2==3.1.4)
  Downloading MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl.metadata (4.1 kB)
Downloading jinja2-3.1.4-py3-none-any.whl (133 kB)
   ---------------------------------------- 133.3/133.3 kB 3.8 MB/s eta 0:00:00
Downloading MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl (15 kB)
Installing collected packages: MarkupSafe, jinja2
Successfully installed MarkupSafe-3.0.2 jinja2-3.1.4

[notice] A new release of pip is available: 24.0+nv1 -> 25.1.1
[notice] To update, run: C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\_schemagen_venv\Scripts\python.exe -m pip install --upgrade pip
Executing schema generation...
  -- OpenUSD Root: C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/usd-deps/usd
  -- Python Root: C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/usd-deps/python
  -- Schema File: C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/schema/test.usda
  -- Target Location: C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/cmake/schema/generated
  -- Python Environment: C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\_schemagen_venv\Scripts\python.exe
-- Plugin root not assigned, defaulting to: C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/schema
-- Configuring done (19.3s)
-- Generating done (0.1s)
-- Build files have been written to: C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/cmake
MSBuild version 17.14.8+a7a4d5af0 for .NET Framework

  1>Checking Build System
  Building Custom Rule C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/schema/CMakeLists.txt
  myXform.cpp
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\myXform.cpp(43,1): warning C4273: 'pxrInternal_v0_22__pxrReserved__::CustomSchemaMyXform::~CustomSchemaMyXform': inconsistent dll linkage [C:\Users\shared-omniverse\omn
iverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\.//myXform.h(83,14): message : see previous definition of '{dtor}' [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]    
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\myXform.cpp(49,1): warning C4273: 'pxrInternal_v0_22__pxrReserved__::CustomSchemaMyXform::Get': inconsistent dll linkage [C:\Users\shared-omniverse\omniverse\usd-schema 
-extension\plugin\_build\cmake\schema\test.vcxproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\.//myXform.h(103,5): message : see previous definition of 'Get' [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]       
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\myXform.cpp(60,1): warning C4273: 'pxrInternal_v0_22__pxrReserved__::CustomSchemaMyXform::_GetSchemaKind': inconsistent dll linkage [C:\Users\shared-omniverse\omniverse 
\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\.//myXform.h(111,19): message : see previous definition of '_GetSchemaKind' [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vc 
xproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\myXform.cpp(67,1): warning C4273: 'pxrInternal_v0_22__pxrReserved__::CustomSchemaMyXform::_GetStaticTfType': inconsistent dll linkage [C:\Users\shared-omniverse\omniver 
se\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\.//myXform.h(117,26): message : see previous definition of '_GetStaticTfType' [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test. 
vcxproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\myXform.cpp(83,1): warning C4273: 'pxrInternal_v0_22__pxrReserved__::CustomSchemaMyXform::_GetTfType': inconsistent dll linkage [C:\Users\shared-omniverse\omniverse\usd 
-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\.//myXform.h(123,19): message : see previous definition of '_GetTfType' [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxpro 
j]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\myXform.cpp(90,1): warning C4273: 'pxrInternal_v0_22__pxrReserved__::CustomSchemaMyXform::GetSchemaAttributeNames': inconsistent dll linkage [C:\Users\shared-omniverse\ 
omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\.//myXform.h(90,5): message : see previous definition of 'GetSchemaAttributeNames' [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\ 
test.vcxproj]
  moduleDeps.cpp
  Generating Code...
     Creating library C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/cmake/schema/Release/test.lib and object C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/cmake/schema/Release/test.exp
myXform.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomImageable::~UsdGeomImageable(void)" (__imp_??1UsdGeomImageable@pxrInternal_v0_22__pxrReserved__@@UEAA@XZ) referenced i
n function "public: virtual void * __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomImageable::`scalar deleting destructor'(unsigned int)" (??_GUsdGeomImageable@pxrInternal_v0_22__pxrReserved__@@UEAAPEAXI@Z) [C:\Users\shared-omniverse\omniverse\usd-schema-extens 
ion\plugin\_build\cmake\schema\test.vcxproj]
myXform.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomXformable::~UsdGeomXformable(void)" (__imp_??1UsdGeomXformable@pxrInternal_v0_22__pxrReserved__@@UEAA@XZ) referenced i 
n function "public: virtual void * __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomXformable::`scalar deleting destructor'(unsigned int)" (??_GUsdGeomXformable@pxrInternal_v0_22__pxrReserved__@@UEAAPEAXI@Z) [C:\Users\shared-omniverse\omniverse\usd-schema-extens 
ion\plugin\_build\cmake\schema\test.vcxproj]
myXform.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomXform::~UsdGeomXform(void)" (__imp_??1UsdGeomXform@pxrInternal_v0_22__pxrReserved__@@UEAA@XZ) referenced in function " 
public: virtual __cdecl pxrInternal_v0_22__pxrReserved__::CustomSchemaMyXform::~CustomSchemaMyXform(void)" (??1CustomSchemaMyXform@pxrInternal_v0_22__pxrReserved__@@UEAA@XZ) [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\tes 
t.vcxproj]
myXform.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class std::vector<class pxrInternal_v0_22__pxrReserved__::TfToken,class std::allocator<class pxrInternal_v0_22__pxrReserved__::TfToken> > const & __cdecl pxrInternal_v0 
_22__pxrReserved__::UsdGeomXform::GetSchemaAttributeNames(bool)" (__imp_?GetSchemaAttributeNames@UsdGeomXform@pxrInternal_v0_22__pxrReserved__@@SAAEBV?$vector@VTfToken@pxrInternal_v0_22__pxrReserved__@@V?$allocator@VTfToken@pxrInternal_v0_22__pxrReserved__@@@std 
@@@std@@_N@Z) referenced in function "public: static class std::vector<class pxrInternal_v0_22__pxrReserved__::TfToken,class std::allocator<class pxrInternal_v0_22__pxrReserved__::TfToken> > const & __cdecl pxrInternal_v0_22__pxrReserved__::CustomSchemaMyXform:: 
GetSchemaAttributeNames(bool)" (?GetSchemaAttributeNames@CustomSchemaMyXform@pxrInternal_v0_22__pxrReserved__@@SAAEBV?$vector@VTfToken@pxrInternal_v0_22__pxrReserved__@@V?$allocator@VTfToken@pxrInternal_v0_22__pxrReserved__@@@std@@@std@@_N@Z) [C:\Users\shared-om 
niverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
myXform.obj : error LNK2001: unresolved external symbol "protected: virtual enum pxrInternal_v0_22__pxrReserved__::UsdSchemaKind __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomImageable::_GetSchemaKind(void)const " (?_GetSchemaKind@UsdGeomImageable@pxrInternal 
_v0_22__pxrReserved__@@MEBA?AW4UsdSchemaKind@2@XZ) [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
myXform.obj : error LNK2001: unresolved external symbol "protected: virtual enum pxrInternal_v0_22__pxrReserved__::UsdSchemaKind __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomXform::_GetSchemaKind(void)const " (?_GetSchemaKind@UsdGeomXform@pxrInternal_v0_22__ 
pxrReserved__@@MEBA?AW4UsdSchemaKind@2@XZ) [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
myXform.obj : error LNK2001: unresolved external symbol "protected: virtual enum pxrInternal_v0_22__pxrReserved__::UsdSchemaKind __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomXformable::_GetSchemaKind(void)const " (?_GetSchemaKind@UsdGeomXformable@pxrInternal 
_v0_22__pxrReserved__@@MEBA?AW4UsdSchemaKind@2@XZ) [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
myXform.obj : error LNK2001: unresolved external symbol "private: virtual class pxrInternal_v0_22__pxrReserved__::TfType const & __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomImageable::_GetTfType(void)const " (?_GetTfType@UsdGeomImageable@pxrInternal_v0_22__ 
pxrReserved__@@EEBAAEBVTfType@2@XZ) [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
myXform.obj : error LNK2001: unresolved external symbol "private: virtual class pxrInternal_v0_22__pxrReserved__::TfType const & __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomXform::_GetTfType(void)const " (?_GetTfType@UsdGeomXform@pxrInternal_v0_22__pxrReser 
ved__@@EEBAAEBVTfType@2@XZ) [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
myXform.obj : error LNK2001: unresolved external symbol "private: virtual class pxrInternal_v0_22__pxrReserved__::TfType const & __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomXformable::_GetTfType(void)const " (?_GetTfType@UsdGeomXformable@pxrInternal_v0_22__ 
pxrReserved__@@EEBAAEBVTfType@2@XZ) [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\Release\test.dll : fatal error LNK1120: 10 unresolved externals [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
PS C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin> .\build.bat
INFO:usd-plugin-samples:Pulling dependencies for nv-usd 25.05 Python 3.10...
Traceback (most recent call last):
  File "C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\scripts\setup.py", line 151, in <module>
    _setup_dependencies(args.usd_flavor, args.usd_ver, args.python_ver, args.config, args.build_tools_only)
  File "C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\scripts\setup.py", line 50, in _setup_dependencies
    raise RuntimeError(f"Requested OpenUSD flavor {usd_flavor} {usd_ver} Python {python_ver} not currently supported")
RuntimeError: Requested OpenUSD flavor nv-usd 25.05 Python 3.10 not currently supported
PS C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin> .\build.bat
INFO:usd-plugin-samples:Pulling dependencies for nv-usd 22.11 Python 3.10...
-- Building for: Visual Studio 17 2022
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.26100.
-- The CXX compiler identification is MSVC 19.29.30159.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Python3: C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/usd-deps/python/python.exe (found version "3.10.15") found components: Interpreter Development Development.Module Development.Embed
-- No generate directory provided, defaulting to C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/cmake/schema/generated
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting jinja2==3.1.4
  Downloading jinja2-3.1.4-py3-none-any.whl.metadata (2.6 kB)
Collecting MarkupSafe>=2.0 (from jinja2==3.1.4)
  Downloading MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl.metadata (4.1 kB)
Downloading jinja2-3.1.4-py3-none-any.whl (133 kB)
   ---------------------------------------- 133.3/133.3 kB 2.6 MB/s eta 0:00:00
Downloading MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl (15 kB)
Installing collected packages: MarkupSafe, jinja2
Successfully installed MarkupSafe-3.0.2 jinja2-3.1.4

[notice] A new release of pip is available: 24.0+nv1 -> 25.1.1
[notice] To update, run: C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\_schemagen_venv\Scripts\python.exe -m pip install --upgrade pip
Executing schema generation...
  -- OpenUSD Root: C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/usd-deps/usd
  -- Python Root: C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/usd-deps/python
  -- Schema File: C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/schema/test.usda
  -- Target Location: C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/cmake/schema/generated
  -- Python Environment: C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\_schemagen_venv\Scripts\python.exe
-- Plugin root not assigned, defaulting to: C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/schema
-- Configuring done (19.2s)
-- Generating done (0.1s)
-- Build files have been written to: C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/cmake
MSBuild version 17.14.8+a7a4d5af0 for .NET Framework

  1>Checking Build System
  Building Custom Rule C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/schema/CMakeLists.txt
  myXform.cpp
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\myXform.cpp(43,1): warning C4273: 'pxrInternal_v0_22__pxrReserved__::CustomMyXform::~CustomMyXform': inconsistent dll linkage [C:\Users\shared-omniverse\omniverse\usd-s
chema-extension\plugin\_build\cmake\schema\test.vcxproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\.//myXform.h(83,14): message : see previous definition of '{dtor}' [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]    
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\myXform.cpp(49,1): warning C4273: 'pxrInternal_v0_22__pxrReserved__::CustomMyXform::Get': inconsistent dll linkage [C:\Users\shared-omniverse\omniverse\usd-schema-exten 
sion\plugin\_build\cmake\schema\test.vcxproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\.//myXform.h(103,5): message : see previous definition of 'Get' [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]       
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\myXform.cpp(60,1): warning C4273: 'pxrInternal_v0_22__pxrReserved__::CustomMyXform::_GetSchemaKind': inconsistent dll linkage [C:\Users\shared-omniverse\omniverse\usd-s 
chema-extension\plugin\_build\cmake\schema\test.vcxproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\.//myXform.h(111,19): message : see previous definition of '_GetSchemaKind' [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vc 
xproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\myXform.cpp(67,1): warning C4273: 'pxrInternal_v0_22__pxrReserved__::CustomMyXform::_GetStaticTfType': inconsistent dll linkage [C:\Users\shared-omniverse\omniverse\usd 
-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\.//myXform.h(117,26): message : see previous definition of '_GetStaticTfType' [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test. 
vcxproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\myXform.cpp(83,1): warning C4273: 'pxrInternal_v0_22__pxrReserved__::CustomMyXform::_GetTfType': inconsistent dll linkage [C:\Users\shared-omniverse\omniverse\usd-schem 
a-extension\plugin\_build\cmake\schema\test.vcxproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\.//myXform.h(123,19): message : see previous definition of '_GetTfType' [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxpro 
j]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\myXform.cpp(90,1): warning C4273: 'pxrInternal_v0_22__pxrReserved__::CustomMyXform::GetSchemaAttributeNames': inconsistent dll linkage [C:\Users\shared-omniverse\omnive 
rse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\generated\.//myXform.h(90,5): message : see previous definition of 'GetSchemaAttributeNames' [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\ 
test.vcxproj]
  moduleDeps.cpp
  Generating Code...
     Creating library C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/cmake/schema/Release/test.lib and object C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/cmake/schema/Release/test.exp
myXform.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomImageable::~UsdGeomImageable(void)" (__imp_??1UsdGeomImageable@pxrInternal_v0_22__pxrReserved__@@UEAA@XZ) referenced i
n function "public: virtual void * __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomImageable::`scalar deleting destructor'(unsigned int)" (??_GUsdGeomImageable@pxrInternal_v0_22__pxrReserved__@@UEAAPEAXI@Z) [C:\Users\shared-omniverse\omniverse\usd-schema-extens 
ion\plugin\_build\cmake\schema\test.vcxproj]
myXform.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomXformable::~UsdGeomXformable(void)" (__imp_??1UsdGeomXformable@pxrInternal_v0_22__pxrReserved__@@UEAA@XZ) referenced i 
n function "public: virtual void * __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomXformable::`scalar deleting destructor'(unsigned int)" (??_GUsdGeomXformable@pxrInternal_v0_22__pxrReserved__@@UEAAPEAXI@Z) [C:\Users\shared-omniverse\omniverse\usd-schema-extens 
ion\plugin\_build\cmake\schema\test.vcxproj]
myXform.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomXform::~UsdGeomXform(void)" (__imp_??1UsdGeomXform@pxrInternal_v0_22__pxrReserved__@@UEAA@XZ) referenced in function " 
public: virtual __cdecl pxrInternal_v0_22__pxrReserved__::CustomMyXform::~CustomMyXform(void)" (??1CustomMyXform@pxrInternal_v0_22__pxrReserved__@@UEAA@XZ) [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
myXform.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class std::vector<class pxrInternal_v0_22__pxrReserved__::TfToken,class std::allocator<class pxrInternal_v0_22__pxrReserved__::TfToken> > const & __cdecl pxrInternal_v0 
_22__pxrReserved__::UsdGeomXform::GetSchemaAttributeNames(bool)" (__imp_?GetSchemaAttributeNames@UsdGeomXform@pxrInternal_v0_22__pxrReserved__@@SAAEBV?$vector@VTfToken@pxrInternal_v0_22__pxrReserved__@@V?$allocator@VTfToken@pxrInternal_v0_22__pxrReserved__@@@std 
@@@std@@_N@Z) referenced in function "public: static class std::vector<class pxrInternal_v0_22__pxrReserved__::TfToken,class std::allocator<class pxrInternal_v0_22__pxrReserved__::TfToken> > const & __cdecl pxrInternal_v0_22__pxrReserved__::CustomMyXform::GetSch 
emaAttributeNames(bool)" (?GetSchemaAttributeNames@CustomMyXform@pxrInternal_v0_22__pxrReserved__@@SAAEBV?$vector@VTfToken@pxrInternal_v0_22__pxrReserved__@@V?$allocator@VTfToken@pxrInternal_v0_22__pxrReserved__@@@std@@@std@@_N@Z) [C:\Users\shared-omniverse\omni 
verse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
myXform.obj : error LNK2001: unresolved external symbol "protected: virtual enum pxrInternal_v0_22__pxrReserved__::UsdSchemaKind __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomImageable::_GetSchemaKind(void)const " (?_GetSchemaKind@UsdGeomImageable@pxrInternal 
_v0_22__pxrReserved__@@MEBA?AW4UsdSchemaKind@2@XZ) [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
myXform.obj : error LNK2001: unresolved external symbol "protected: virtual enum pxrInternal_v0_22__pxrReserved__::UsdSchemaKind __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomXform::_GetSchemaKind(void)const " (?_GetSchemaKind@UsdGeomXform@pxrInternal_v0_22__ 
pxrReserved__@@MEBA?AW4UsdSchemaKind@2@XZ) [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
myXform.obj : error LNK2001: unresolved external symbol "protected: virtual enum pxrInternal_v0_22__pxrReserved__::UsdSchemaKind __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomXformable::_GetSchemaKind(void)const " (?_GetSchemaKind@UsdGeomXformable@pxrInternal 
_v0_22__pxrReserved__@@MEBA?AW4UsdSchemaKind@2@XZ) [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
myXform.obj : error LNK2001: unresolved external symbol "private: virtual class pxrInternal_v0_22__pxrReserved__::TfType const & __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomImageable::_GetTfType(void)const " (?_GetTfType@UsdGeomImageable@pxrInternal_v0_22__ 
pxrReserved__@@EEBAAEBVTfType@2@XZ) [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
myXform.obj : error LNK2001: unresolved external symbol "private: virtual class pxrInternal_v0_22__pxrReserved__::TfType const & __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomXform::_GetTfType(void)const " (?_GetTfType@UsdGeomXform@pxrInternal_v0_22__pxrReser 
ved__@@EEBAAEBVTfType@2@XZ) [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
myXform.obj : error LNK2001: unresolved external symbol "private: virtual class pxrInternal_v0_22__pxrReserved__::TfType const & __cdecl pxrInternal_v0_22__pxrReserved__::UsdGeomXformable::_GetTfType(void)const " (?_GetTfType@UsdGeomXformable@pxrInternal_v0_22__ 
pxrReserved__@@EEBAAEBVTfType@2@XZ) [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\Release\test.dll : fatal error LNK1120: 10 unresolved externals [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\test.vcxproj]

Reproduction Steps:

The issue cannot be reproduced on linux builds

Checkout the samples repo on the kit106 branch (needed for omniverse extension)

Install build tools (for v142)

winget install Microsoft.VisualStudio.2019.BuildTools --override "--add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --includeRecommended --quiet --wait --norestart"

Install CMake

winget install Kitware.CMake --accept-source-agreements --accept-package-agreements

The custom schema directory has the following cmake

# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_DIR}/../../../../_install/test")
set(CMAKE_INSTALL_BINDIR "bin")
set(CMAKE_INSTALL_LIBDIR "lib")
set(CMAKE_INSTALL_INCLUDEDIR "include")
openusd_schema(test
    GENERATE_SCHEMA
    SCHEMA_FILE
        "${CMAKE_CURRENT_LIST_DIR}/test.usda"
)

The project root cmake is kinda untouched. Just the path to the test schema directory has been changed

Error Code:

The linking errors in the main issues section

1 Like

Sorry for the late reply. I was trying to find the right expert to take a look at this. Let me run it by our OpenUSD experts and see what they say. Thanks for your patience.

When you added a subLayer dependency to usdGeom and inherited from Xform, you are introducing a dependency on usdGeom that will need to be resolved at link time. It should be sufficient to add the following to your CMakeLists.txt file after the openusd_schema call:

target_link_libraries(test PUBLIC usdGeom)

Note you may also need to add the link dependency to the python module generated as well:

target_link_libraries(_test PUBLIC usdGeom)

Thanks @eslavin . @vgerber , I’d also recommend inheriting from Xformable rather than Xform, from a data modeling perspective.

Thanks Everyone !! Great to have the experts here.

So I added libs to the target

set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_DIR}/../../../../_install/test")
set(CMAKE_INSTALL_BINDIR "bin")
set(CMAKE_INSTALL_LIBDIR "lib")
set(CMAKE_INSTALL_INCLUDEDIR "include")

openusd_schema(test
    GENERATE_SCHEMA
    SCHEMA_FILE
        "${CMAKE_CURRENT_LIST_DIR}/test.usda"
)
target_link_libraries(test PUBLIC usdGeom)
target_link_libraries(_test PUBLIC usdGeom)

Changed the Xform to Xformable

class "MyXform" (
    inherits = </Xformable>
    doc = """Defines a xform."""
) {}

And at least the UsdGeom related linking errors are gone. Now I’m only left with this last linking error

INFO:usd-plugin-samples:Pulling dependencies for nv-usd 22.11 Python 3.10...
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.26100.
-- No generate directory provided, defaulting to C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/cmake/schema/generated
-- Plugin root not assigned, defaulting to: C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/schema
-- Configuring done (0.7s)
-- Generating done (0.3s)
-- Build files have been written to: C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/cmake
MSBuild version 17.14.8+a7a4d5af0 for .NET Framework

  test.vcxproj -> C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\Release\test.dll
     Creating library C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/cmake/schema/Release/_test.lib and object C:/Users/shared-omniverse/omniverse/usd-schema-extension/plugin/_build/cmake/schema/R
  elease/_test.exp
wrapModule.obj : error LNK2019: unresolved external symbol "void __cdecl wrapCustomTokens(void)" (?wrapCustomTokens@@YAXXZ) referenced in function "void __cdecl WrapModule(void)" (?WrapModule@@YAXXZ) [C:\Users\shared-omn
iverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\_test.vcxproj]
C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\cmake\schema\Release\_test.pyd : fatal error LNK1120: 1 unresolved externals [C:\Users\shared-omniverse\omniverse\usd-schema-extension\plugin\_build\ 
cmake\schema\_test.vcxproj]
1 Like

Can you look at what was generated? Particularly any wrapX.cpp files.

1 Like

wrapX_files.zip (1.9 KB)

I attached the wrapX files

I do see that wrapModule.cpp references wrapCustomTokens, but I do not see that function defined anywhere. Do you get a tokens.h file generated at all?

Ah ok I see what is going on - your schema class has no attributes, hence no tokens will get generated for it. There must be code somewhere that assumes there will be generated tokens (which is true for almost all schemas), but looks like a schema with just empty schema classes is not accounted for.

As a simple test, if I add an attribute to your schema it will compile fine (because it will generate tokens.h and wrapTokens.cpp)

Can confirm this.
I added a token attribute and it generates the .cpp file and compiles just fine

class "MyXform" (
    inherits = </Xformable>
    doc = """Defines a xform."""

    customData = {
        string className = "MyXform"
    }
) {

    token abcToken = "inherited" (allowedTokens = ["inherited", "invisible"])
}

Ok great, that gets you going, we’ll take a look at why the corner case is failing, thanks.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.