Skip to content

[BUG] Clang 19: Linking Errors in NanoVDB CUDA Examples due to Undefined Symbol (Move Constructor GridHandle) #2159

@YMBUF

Description

@YMBUF

Environment

Operating System: debian13
Version / Commit SHA: OpenVDB 13.0.0 (release)
CMake Version: 3.31.6
Compiler: clang 19.1.7 (g++-14 as a reference)
Cuda: V13.1.80

Describe the problem

I'm trying to build OpenVDB as a standalone with NanoVDB and the NanoVDB examples.
Using Clang 19 as a compiler, I encounter numerous compilation issues with the CUDA-specific examples. The error usually indicates an undefined symbol related to nanovdb::GridHandle, such as:

error: undefined symbol: nanovdb::GridHandle<nanovdb::cuda::DeviceBuffer>::GridHandle<nanovdb::cuda::DeviceBuffer, 0>(nanovdb::cuda::DeviceBuffer&&)

Additional context

I don't have any issues when running simple CUDA kernels or using a cuda kernal that reads and prints values from a nanovdb grid provided that I don't use the CreateNanoGrid and similar functions that call the move constructor of nanovdb::GridHandlenanovdb::cuda::DeviceBuffer. It seems that in this setup, the symbol is not exported by the nvcc-compiled object file .cu.o even though GridHandle.cuh should instantiate the move constructor.

Also, using g++-14 in my environment, the examples compile without issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions