AcademySoftwareFoundation / openvdb

OpenVDB - Sparse volume data structure and tools
http://www.openvdb.org/
Mozilla Public License 2.0
2.62k stars 647 forks source link

[BUG] Unresolved References when building without explicit instantiation #1709

Closed Destranix closed 10 months ago

Destranix commented 10 months ago

Environment

Operating System: Windows 10 Version / Commit SHA: (https://github.com/AcademySoftwareFoundation/openvdb/commit/9153c12ed095156aad18f4a0ca7f754b97eb83da) Other: (Shortened build log):

**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.4.4
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
===============================================================
-- The CXX compiler identification is MSVC 19.34.31937.0
-- The CUDA compiler identification is NVIDIA 12.1.66
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.34.31933//bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting CUDA compiler ABI info
-- Detecting CUDA compiler ABI info - done
-- Check for working CUDA compiler: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/bin/nvcc.exe - skipped
-- Detecting CUDA compile features
-- Detecting CUDA compile features - done
## setup cuda
-- cuda-compiler C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/bin/nvcc.exe
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- No Doxygen found. Documentation won't be built
-- The C compiler identification is MSVC 19.34.31937.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.34.31933//bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
COMPONENT = openvdb
-- Found OpenVDB: D:/My_Programs/openvdb/include (found version "11.0.0") found components: openvdb
-- OpenVDB ABI Version: 11
-- Found TBB: D:/My_Programs/Fortran/tbb/latest/include (found version "2021.9") found components: tbb
CMake Warning at C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.24/Modules/FindBoost.cmake:1384 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.24/Modules/FindBoost.cmake:1507 (_Boost_COMPONENT_DEPENDENCIES)
  C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.24/Modules/FindBoost.cmake:2118 (_Boost_MISSING_DEPENDENCIES)
  CMake/FindOpenVDB.cmake:494 (find_package)
  CMake-Utils/setup_externallibs.cmake:110 (find_package)
  CMakeLists.txt:20 (include)

CMake Warning at C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.24/Modules/FindBoost.cmake:1384 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.24/Modules/FindBoost.cmake:1507 (_Boost_COMPONENT_DEPENDENCIES)
  C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.24/Modules/FindBoost.cmake:2118 (_Boost_MISSING_DEPENDENCIES)
  CMake/FindOpenVDB.cmake:494 (find_package)
  CMake-Utils/setup_externallibs.cmake:110 (find_package)
  CMakeLists.txt:20 (include)

-- Found Boost: D:/My_Programs/Boost/boost_1_81_0 (found version "1.81.0") found components: iostreams regex
-- Found Blosc: D:/My_Programs/blosc/lib/blosc.lib (found version "1.21.6")
-- Found ZLIB: C:/Program Files/HDF_Group/HDF5/1.14.0/lib/libz.lib (found version "1.2.13")
-- Found Git: D:/Meine Programme/Git/cmd/git.exe (found version "2.38.0.windows.1")
[121/123] Building CUDA object Projects\OaSiS\CMakeFiles\oasis.dir\Debug\oasis.cu.obj
D:\My_Programs\openvdb\include\openvdb/Exceptions.h(17): warning #1388-D: base class dllexport/dllimport specification differs from that of the derived class
  class __declspec(dllimport) Exception: public std::exception
                                                ^

Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"

D:\My_Programs\openvdb\include\openvdb/Exceptions.h(43): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::string mMessage;
                  ^

D:\My_Programs\openvdb\include\openvdb\Metadata.h(114): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Name mTypeName;
           ^

D:\My_Programs\openvdb\include\openvdb\Metadata.h(115): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      ByteVec mBytes;
              ^

D:\My_Programs\openvdb\include\openvdb/io/io.h(109): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::unique_ptr<Impl> mImpl;
                            ^

D:\My_Programs\openvdb\include\openvdb/io/io.h(172): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::unique_ptr<Impl> mImpl;
                            ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(286): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      MapDictionary mMap;
                    ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(637): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Mat4d  mMatrix;
             ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(640): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Mat4d  mMatrixInv;
             ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(641): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Mat3d  mJacobianInv;
             ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(643): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d  mVoxelSize;
             ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(899): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mScaleValues, mVoxelSize, mScaleValuesInverse, mInvScaleSqr, mInvTwiceScale;
            ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(899): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mScaleValues, mVoxelSize, mScaleValuesInverse, mInvScaleSqr, mInvTwiceScale;
                          ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(899): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mScaleValues, mVoxelSize, mScaleValuesInverse, mInvScaleSqr, mInvTwiceScale;
                                      ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(899): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mScaleValues, mVoxelSize, mScaleValuesInverse, mInvScaleSqr, mInvTwiceScale;
                                                           ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(899): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mScaleValues, mVoxelSize, mScaleValuesInverse, mInvScaleSqr, mInvTwiceScale;
                                                                         ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(1150): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mTranslation;
            ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(1452): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mTranslation, mScaleValues, mVoxelSize, mScaleValuesInverse,
            ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(1452): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mTranslation, mScaleValues, mVoxelSize, mScaleValuesInverse,
                          ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(1452): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mTranslation, mScaleValues, mVoxelSize, mScaleValuesInverse,
                                        ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(1452): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mTranslation, mScaleValues, mVoxelSize, mScaleValuesInverse,
                                                    ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(1453): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
          mInvScaleSqr, mInvTwiceScale;
          ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(1453): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
          mInvScaleSqr, mInvTwiceScale;
                        ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(2567): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      BBoxd   mBBox;
              ^

D:\My_Programs\openvdb\include\openvdb\math/Transform.h(157): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      MapBase::Ptr mMap;
                   ^

D:\My_Programs\openvdb\include\openvdb\MetaMap.h(108): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      MetadataMap mMeta;
                  ^

D:\My_Programs\openvdb\include\openvdb\io\DelayedLoadMetadata.h(93): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::vector<MaskType> mMask;
                            ^

D:\My_Programs\openvdb\include\openvdb\io\DelayedLoadMetadata.h(94): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::vector<CompressedSizeType> mCompressedSize;
                                      ^

D:\My_Programs\openvdb\include\openvdb\Grid.h(501): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      math::Transform::Ptr mTransform;
                           ^

D:\My_Programs\openvdb\include\openvdb\Grid.h(534): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Name name;
           ^

D:\My_Programs\openvdb\include\openvdb\points\StreamCompression.h(161): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::unique_ptr<Info> mInfo = std::unique_ptr<Info>(new Info);
                            ^

D:\My_Programs\openvdb\include\openvdb\points\StreamCompression.h(162): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::unique_ptr<char[]> mData;
                              ^

D:\My_Programs\openvdb\include\openvdb\points\StreamCompression.h(163): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      tbb::spin_mutex mMutex;
                      ^

D:\My_Programs\openvdb\include\openvdb\points\StreamCompression.h(197): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Page::Ptr mPage;
                ^

D:\My_Programs\openvdb\include\openvdb\points\StreamCompression.h(235): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Page::Ptr mPage;
                ^

D:\My_Programs\openvdb\include\openvdb\points\StreamCompression.h(274): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::unique_ptr<char[]> mData = std::unique_ptr<char[]>(new char[PageSize]);
                              ^

D:\My_Programs\openvdb\include\openvdb\points\StreamCompression.h(275): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::unique_ptr<char[]> mCompressedData = nullptr;
                              ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeArray.h(120): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
          tbb::spin_mutex::scoped_lock lock;
                                       ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeArray.h(399): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      mutable tbb::spin_mutex mMutex;
                              ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeArray.h(402): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::atomic<Index32> mOutOfCore;
                           ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeArray.h(407): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      };
       ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeArrayString.h(80): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      ValueMap mCache;
               ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeArrayString.h(115): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      IndexPairArray mIdBlocks;
                     ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeArrayString.h(178): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      AttributeHandle<Index, StringCodec<false>>    mHandle;
                                                    ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeArrayString.h(235): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      AttributeWriteHandle<Index, StringCodec<false>>     mWriteHandle;
                                                          ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeSet.h(287): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      DescriptorPtr mDescr;
                    ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeSet.h(288): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      AttrArrayVec  mAttrs;
                    ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeSet.h(528): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      NameToPosMap                mNameMap;
                                  ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeSet.h(529): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::vector<NamePair>       mTypes;
                                  ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeSet.h(530): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      NameToPosMap                mGroupMap;
                                  ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeSet.h(535): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      future::Container           mFutureContainer;
                                  ^

D:\My_Programs\openvdb\include\openvdb\io\Archive.h(180): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      VersionId mLibraryVersion;
                ^

D:\My_Programs\openvdb\include\openvdb\io\Archive.h(182): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      mutable std::string mUuid;
                          ^

D:\My_Programs\openvdb\include\openvdb\io\GridDescriptor.h(84): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Name mGridName;
           ^

D:\My_Programs\openvdb\include\openvdb\io\GridDescriptor.h(86): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Name mUniqueName;
           ^

D:\My_Programs\openvdb\include\openvdb\io\GridDescriptor.h(88): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Name mInstanceParentName;
           ^

D:\My_Programs\openvdb\include\openvdb\io\GridDescriptor.h(90): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Name mGridType;
           ^

D:\My_Programs\openvdb\include\openvdb\io/File.h(156): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
          NameMapCIter mIter;
                       ^

D:\My_Programs\openvdb\include\openvdb\io/File.h(215): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::unique_ptr<Impl> mImpl;
                            ^

D:\Destranix\Documents\00Uni\Masterarbeit\ginkgo\build\out\install\include\ginkgo/core/log/convergence.hpp(66): warning #611-D: overloaded virtual function "gko::log::Logger::on_iteration_complete" is only partially overridden in class "gko::log::Convergence<float>"
  class Convergence : public Logger {
        ^
          detected during instantiation of class "gko::log::Convergence<ValueType> [with ValueType=float]" at line 2467 of D:\Destranix\Documents\00Uni\Masterarbeit\OaSiS\Projects\OaSiS\oasis_simulator.cuh

D:\My_Programs\openvdb\include\openvdb/Exceptions.h(17): warning #1388-D: base class dllexport/dllimport specification differs from that of the derived class
  class __declspec(dllimport) Exception: public std::exception
                                                ^

Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"

D:\My_Programs\openvdb\include\openvdb/Exceptions.h(43): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::string mMessage;
                  ^

D:\My_Programs\openvdb\include\openvdb\Metadata.h(114): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Name mTypeName;
           ^

D:\My_Programs\openvdb\include\openvdb\Metadata.h(115): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      ByteVec mBytes;
              ^

D:\My_Programs\openvdb\include\openvdb/io/io.h(109): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::unique_ptr<Impl> mImpl;
                            ^

D:\My_Programs\openvdb\include\openvdb/io/io.h(172): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::unique_ptr<Impl> mImpl;
                            ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(286): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      MapDictionary mMap;
                    ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(637): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Mat4d  mMatrix;
             ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(640): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Mat4d  mMatrixInv;
             ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(641): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Mat3d  mJacobianInv;
             ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(643): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d  mVoxelSize;
             ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(899): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mScaleValues, mVoxelSize, mScaleValuesInverse, mInvScaleSqr, mInvTwiceScale;
            ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(899): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mScaleValues, mVoxelSize, mScaleValuesInverse, mInvScaleSqr, mInvTwiceScale;
                          ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(899): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mScaleValues, mVoxelSize, mScaleValuesInverse, mInvScaleSqr, mInvTwiceScale;
                                      ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(899): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mScaleValues, mVoxelSize, mScaleValuesInverse, mInvScaleSqr, mInvTwiceScale;
                                                           ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(899): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mScaleValues, mVoxelSize, mScaleValuesInverse, mInvScaleSqr, mInvTwiceScale;
                                                                         ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(1150): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mTranslation;
            ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(1452): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mTranslation, mScaleValues, mVoxelSize, mScaleValuesInverse,
            ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(1452): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mTranslation, mScaleValues, mVoxelSize, mScaleValuesInverse,
                          ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(1452): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mTranslation, mScaleValues, mVoxelSize, mScaleValuesInverse,
                                        ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(1452): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Vec3d mTranslation, mScaleValues, mVoxelSize, mScaleValuesInverse,
                                                    ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(1453): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
          mInvScaleSqr, mInvTwiceScale;
          ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(1453): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
          mInvScaleSqr, mInvTwiceScale;
                        ^

D:\My_Programs\openvdb\include\openvdb\math/Maps.h(2567): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      BBoxd   mBBox;
              ^

D:\My_Programs\openvdb\include\openvdb\math/Transform.h(157): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      MapBase::Ptr mMap;
                   ^

D:\My_Programs\openvdb\include\openvdb\MetaMap.h(108): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      MetadataMap mMeta;
                  ^

D:\My_Programs\openvdb\include\openvdb\io\DelayedLoadMetadata.h(93): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::vector<MaskType> mMask;
                            ^

D:\My_Programs\openvdb\include\openvdb\io\DelayedLoadMetadata.h(94): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::vector<CompressedSizeType> mCompressedSize;
                                      ^

D:\My_Programs\openvdb\include\openvdb\Grid.h(501): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      math::Transform::Ptr mTransform;
                           ^

D:\My_Programs\openvdb\include\openvdb\Grid.h(534): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Name name;
           ^

D:\My_Programs\openvdb\include\openvdb\points\StreamCompression.h(161): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::unique_ptr<Info> mInfo = std::unique_ptr<Info>(new Info);
                            ^

D:\My_Programs\openvdb\include\openvdb\points\StreamCompression.h(162): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::unique_ptr<char[]> mData;
                              ^

D:\My_Programs\openvdb\include\openvdb\points\StreamCompression.h(163): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      tbb::spin_mutex mMutex;
                      ^

D:\My_Programs\openvdb\include\openvdb\points\StreamCompression.h(197): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Page::Ptr mPage;
                ^

D:\My_Programs\openvdb\include\openvdb\points\StreamCompression.h(235): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Page::Ptr mPage;
                ^

D:\My_Programs\openvdb\include\openvdb\points\StreamCompression.h(274): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::unique_ptr<char[]> mData = std::unique_ptr<char[]>(new char[PageSize]);
                              ^

D:\My_Programs\openvdb\include\openvdb\points\StreamCompression.h(275): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::unique_ptr<char[]> mCompressedData = nullptr;
                              ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeArray.h(120): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
          tbb::spin_mutex::scoped_lock lock;
                                       ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeArray.h(399): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      mutable tbb::spin_mutex mMutex;
                              ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeArray.h(402): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::atomic<Index32> mOutOfCore;
                           ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeArray.h(407): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      };
       ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeArrayString.h(80): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      ValueMap mCache;
               ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeArrayString.h(115): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      IndexPairArray mIdBlocks;
                     ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeArrayString.h(178): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      AttributeHandle<Index, StringCodec<false>>    mHandle;
                                                    ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeArrayString.h(235): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      AttributeWriteHandle<Index, StringCodec<false>>     mWriteHandle;
                                                          ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeSet.h(287): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      DescriptorPtr mDescr;
                    ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeSet.h(288): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      AttrArrayVec  mAttrs;
                    ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeSet.h(528): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      NameToPosMap                mNameMap;
                                  ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeSet.h(529): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::vector<NamePair>       mTypes;
                                  ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeSet.h(530): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      NameToPosMap                mGroupMap;
                                  ^

D:\My_Programs\openvdb\include\openvdb\points\AttributeSet.h(535): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      future::Container           mFutureContainer;
                                  ^

D:\My_Programs\openvdb\include\openvdb\io\Archive.h(180): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      VersionId mLibraryVersion;
                ^

D:\My_Programs\openvdb\include\openvdb\io\Archive.h(182): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      mutable std::string mUuid;
                          ^

D:\My_Programs\openvdb\include\openvdb\io\GridDescriptor.h(84): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Name mGridName;
           ^

D:\My_Programs\openvdb\include\openvdb\io\GridDescriptor.h(86): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Name mUniqueName;
           ^

D:\My_Programs\openvdb\include\openvdb\io\GridDescriptor.h(88): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Name mInstanceParentName;
           ^

D:\My_Programs\openvdb\include\openvdb\io\GridDescriptor.h(90): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      Name mGridType;
           ^

D:\My_Programs\openvdb\include\openvdb\io/File.h(156): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
          NameMapCIter mIter;
                       ^

D:\My_Programs\openvdb\include\openvdb\io/File.h(215): warning #1394-D: field of class type without a DLL interface used in a class with a DLL interface
      std::unique_ptr<Impl> mImpl;
                            ^
[122/123] Linking CXX executable Projects\OaSiS\Debug\oasis.exe
FAILED: Projects/OaSiS/Debug/oasis.exe
cmd.exe /C "cd . && "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E vs_link_exe --intdir=Projects\OaSiS\CMakeFiles\oasis.dir\Debug --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\mt.exe --manifests  -- C:\PROGRA~2\MICROS~2\2022\BUILDT~1\VC\Tools\MSVC\1434~1.319\\bin\Hostx64\x64\link.exe /nologo Projects\OaSiS\CMakeFiles\oasis.dir\Debug\oasis.cu.obj  /out:Projects\OaSiS\Debug\oasis.exe /implib:Projects\OaSiS\Debug\oasis.lib /pdb:Projects\OaSiS\Debug\oasis.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console  /NODEFAULTLIB:libcmt.lib -LIBPATH:D:\My_Programs\Fortran\tbb\latest\lib\intel64\vc_mt   -LIBPATH:C:\PROGRA~1\NVIDIA~2\CUDA\v12.1\lib\x64 Library\MnSystem\Debug\mncuda.lib  Library\MnSystem\Debug\mnio.lib  _deps\spdlog-build\Debug\spdlogd.lib  _deps\fmt-build\Debug\fmtd.lib  D:\Destranix\Documents\00Uni\Masterarbeit\ginkgo\build\out\install\lib\ginkgod.lib  D:\My_Programs\openvdb\lib\openvdb.lib  Externals\partio\Debug\partio.lib  D:\Destranix\Documents\00Uni\Masterarbeit\ginkgo\build\out\install\lib\ginkgo_ompd.lib  D:\Destranix\Documents\00Uni\Masterarbeit\ginkgo\build\out\install\lib\ginkgo_cudad.lib  "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64\cudart_static.lib"  "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64\cublas.lib"  "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64\cusparse.lib"  "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64\curand.lib"  "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64\cufft.lib"  D:\Destranix\Documents\00Uni\Masterarbeit\ginkgo\build\out\install\lib\ginkgo_referenced.lib  D:\Destranix\Documents\00Uni\Masterarbeit\ginkgo\build\out\install\lib\ginkgo_hipd.lib  D:\Destranix\Documents\00Uni\Masterarbeit\ginkgo\build\out\install\lib\ginkgo_dpcppd.lib  D:\Destranix\Documents\00Uni\Masterarbeit\ginkgo\build\out\install\lib\ginkgo_deviced.lib  D:\My_Programs\Boost\boost_1_81_0\lib64-msvc-14.3\boost_iostreams-vc143-mt-gd-x64-1_81.lib  D:\My_Programs\Boost\boost_1_81_0\lib64-msvc-14.3\boost_regex-vc143-mt-gd-x64-1_81.lib  D:\My_Programs\Fortran\tbb\latest\lib\intel64\vc_mt\tbb_debug.lib  cudadevrt.lib  cudart_static.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
LINK Pass 1: command "C:\PROGRA~2\MICROS~2\2022\BUILDT~1\VC\Tools\MSVC\1434~1.319\\bin\Hostx64\x64\link.exe /nologo Projects\OaSiS\CMakeFiles\oasis.dir\Debug\oasis.cu.obj /out:Projects\OaSiS\Debug\oasis.exe /implib:Projects\OaSiS\Debug\oasis.lib /pdb:Projects\OaSiS\Debug\oasis.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console /NODEFAULTLIB:libcmt.lib -LIBPATH:D:\My_Programs\Fortran\tbb\latest\lib\intel64\vc_mt -LIBPATH:C:\PROGRA~1\NVIDIA~2\CUDA\v12.1\lib\x64 Library\MnSystem\Debug\mncuda.lib Library\MnSystem\Debug\mnio.lib _deps\spdlog-build\Debug\spdlogd.lib _deps\fmt-build\Debug\fmtd.lib D:\Destranix\Documents\00Uni\Masterarbeit\ginkgo\build\out\install\lib\ginkgod.lib D:\My_Programs\openvdb\lib\openvdb.lib Externals\partio\Debug\partio.lib D:\Destranix\Documents\00Uni\Masterarbeit\ginkgo\build\out\install\lib\ginkgo_ompd.lib D:\Destranix\Documents\00Uni\Masterarbeit\ginkgo\build\out\install\lib\ginkgo_cudad.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64\cudart_static.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64\cublas.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64\cusparse.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64\curand.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64\cufft.lib D:\Destranix\Documents\00Uni\Masterarbeit\ginkgo\build\out\install\lib\ginkgo_referenced.lib D:\Destranix\Documents\00Uni\Masterarbeit\ginkgo\build\out\install\lib\ginkgo_hipd.lib D:\Destranix\Documents\00Uni\Masterarbeit\ginkgo\build\out\install\lib\ginkgo_dpcppd.lib D:\Destranix\Documents\00Uni\Masterarbeit\ginkgo\build\out\install\lib\ginkgo_deviced.lib D:\My_Programs\Boost\boost_1_81_0\lib64-msvc-14.3\boost_iostreams-vc143-mt-gd-x64-1_81.lib D:\My_Programs\Boost\boost_1_81_0\lib64-msvc-14.3\boost_regex-vc143-mt-gd-x64-1_81.lib D:\My_Programs\Fortran\tbb\latest\lib\intel64\vc_mt\tbb_debug.lib cudadevrt.lib cudart_static.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:Projects\OaSiS\CMakeFiles\oasis.dir\Debug/intermediate.manifest Projects\OaSiS\CMakeFiles\oasis.dir\Debug/manifest.res" failed (exit code 1120) with the following output:
   Creating library Projects\OaSiS\Debug\oasis.lib and object Projects\OaSiS\Debug\oasis.exp
oasis.cu.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl openvdb::v11_0::tools::pruneInactive<class openvdb::v11_0::tree::Tree<class openvdb::v11_0::tree::RootNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::LeafNode<__int64,3>,4>,5> > > >(class openvdb::v11_0::tree::Tree<class openvdb::v11_0::tree::RootNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::LeafNode<__int64,3>,4>,5> > > &,bool,unsigned __int64)" (__imp_??$pruneInactive@V?$Tree@V?$RootNode@V?$InternalNode@V?$InternalNode@V?$LeafNode@_J$02@tree@v11_0@openvdb@@$03@tree@v11_0@openvdb@@$04@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@tools@v11_0@openvdb@@YAXAEAV?$Tree@V?$RootNode@V?$InternalNode@V?$InternalNode@V?$LeafNode@_J$02@tree@v11_0@openvdb@@$03@tree@v11_0@openvdb@@$04@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@tree@12@_N_K@Z) referenced in function "class std::vector<class std::shared_ptr<class openvdb::v11_0::GridBase>,class std::allocator<class std::shared_ptr<class openvdb::v11_0::GridBase> > > __cdecl openvdb::v11_0::points::rasterize_sdf_internal::rasterizeSurface<class openvdb::v11_0::Grid<class openvdb::v11_0::tree::Tree<class openvdb::v11_0::tree::RootNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::LeafNode<float,3>,4>,5> > > >,struct openvdb::v11_0::points::rasterize_sdf_internal::AveragePositionTransfer,struct openvdb::v11_0::TypeList<float,int,class openvdb::v11_0::math::Vec3<float> >,struct openvdb::v11_0::util::NullInterrupter,class openvdb::v11_0::Grid<class openvdb::v11_0::tree::Tree<class openvdb::v11_0::tree::RootNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::points::PointDataLeafNode<struct openvdb::v11_0::PointIndex<unsigned int,1>,3>,4>,5> > > >,class openvdb::v11_0::points::NullFilter,unsigned __int64 const &,struct openvdb::v11_0::points::rasterize_sdf_internal::VaryingRadius<float,struct openvdb::v11_0::points::UnknownCodec> &,double const &,class openvdb::v11_0::math::Transform const &,class openvdb::v11_0::Grid<class openvdb::v11_0::tree::Tree<class openvdb::v11_0::tree::RootNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::LeafNode<float,3>,4>,5> > > > &>(class openvdb::v11_0::Grid<class openvdb::v11_0::tree::Tree<class openvdb::v11_0::tree::RootNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::points::PointDataLeafNode<struct openvdb::v11_0::PointIndex<unsigned int,1>,3>,4>,5> > > > const &,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > const &,class openvdb::v11_0::points::NullFilter const &,class openvdb::v11_0::Grid<class openvdb::v11_0::tree::Tree<class openvdb::v11_0::tree::RootNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::LeafNode<float,3>,4>,5> > > > &,struct openvdb::v11_0::util::NullInterrupter *,unsigned __int64 const &,struct openvdb::v11_0::points::rasterize_sdf_internal::VaryingRadius<float,struct openvdb::v11_0::points::UnknownCodec> &,double const &,class openvdb::v11_0::math::Transform const &,class openvdb::v11_0::Grid<class openvdb::v11_0::tree::Tree<class openvdb::v11_0::tree::RootNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::LeafNode<float,3>,4>,5> > > > &)" (??$rasterizeSurface@V?$Grid@V?$Tree@V?$RootNode@V?$InternalNode@V?$InternalNode@V?$LeafNode@M$02@tree@v11_0@openvdb@@$03@tree@v11_0@openvdb@@$04@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@v11_0@openvdb@@UAveragePositionTransfer@rasterize_sdf_internal@points@23@U?$TypeList@MHV?$Vec3@M@math@v11_0@openvdb@@@23@UNullInterrupter@util@23@V?$Grid@V?$Tree@V?$RootNode@V?$InternalNode@V?$InternalNode@V?$PointDataLeafNode@U?$PointIndex@I$00@v11_0@openvdb@@$02@points@v11_0@openvdb@@$03@tree@v11_0@openvdb@@$04@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@23@VNullFilter@623@AEB_KAEAU?$VaryingRadius@MUUnknownCodec@points@v11_0@openvdb@@@5623@AEBNAEBVTransform@math@23@AEAV123@@rasterize_sdf_internal@points@v11_0@openvdb@@YA?AV?$vector@V?$shared_ptr@VGridBase@v11_0@openvdb@@@std@@V?$allocator@V?$shared_ptr@VGridBase@v11_0@openvdb@@@std@@@2@@std@@AEBV?$Grid@V?$Tree@V?$RootNode@V?$InternalNode@V?$InternalNode@V?$PointDataLeafNode@U?$PointIndex@I$00@v11_0@openvdb@@$02@points@v11_0@openvdb@@$03@tree@v11_0@openvdb@@$04@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@23@AEBV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@5@AEBVNullFilter@123@AEAV?$Grid@V?$Tree@V?$RootNode@V?$InternalNode@V?$InternalNode@V?$LeafNode@M$02@tree@v11_0@openvdb@@$03@tree@v11_0@openvdb@@$04@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@23@PEAUNullInterrupter@util@23@AEB_KAEAU?$VaryingRadius@MUUnknownCodec@points@v11_0@openvdb@@@0123@AEBNAEBVTransform@math@23@3@Z)
oasis.cu.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl openvdb::v11_0::tools::pruneInactive<class openvdb::v11_0::tree::Tree<class openvdb::v11_0::tree::RootNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::LeafNode<float,3>,4>,5> > > >(class openvdb::v11_0::tree::Tree<class openvdb::v11_0::tree::RootNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::LeafNode<float,3>,4>,5> > > &,bool,unsigned __int64)" (__imp_??$pruneInactive@V?$Tree@V?$RootNode@V?$InternalNode@V?$InternalNode@V?$LeafNode@M$02@tree@v11_0@openvdb@@$03@tree@v11_0@openvdb@@$04@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@tools@v11_0@openvdb@@YAXAEAV?$Tree@V?$RootNode@V?$InternalNode@V?$InternalNode@V?$LeafNode@M$02@tree@v11_0@openvdb@@$03@tree@v11_0@openvdb@@$04@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@tree@12@_N_K@Z) referenced in function "class std::vector<class std::shared_ptr<class openvdb::v11_0::GridBase>,class std::allocator<class std::shared_ptr<class openvdb::v11_0::GridBase> > > __cdecl openvdb::v11_0::points::rasterizeSmoothSpheres<class openvdb::v11_0::Grid<class openvdb::v11_0::tree::Tree<class openvdb::v11_0::tree::RootNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::points::PointDataLeafNode<struct openvdb::v11_0::PointIndex<unsigned int,1>,3>,4>,5> > > >,struct openvdb::v11_0::TypeList<float,int,class openvdb::v11_0::math::Vec3<float> >,float,class openvdb::v11_0::Grid<class openvdb::v11_0::tree::Tree<class openvdb::v11_0::tree::RootNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::LeafNode<float,3>,4>,5> > > >,class openvdb::v11_0::points::NullFilter,struct openvdb::v11_0::util::NullInterrupter>(class openvdb::v11_0::Grid<class openvdb::v11_0::tree::Tree<class openvdb::v11_0::tree::RootNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::tree::InternalNode<class openvdb::v11_0::points::PointDataLeafNode<struct openvdb::v11_0::PointIndex<unsigned int,1>,3>,4>,5> > > > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,double,double,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > const &,double,class std::shared_ptr<class openvdb::v11_0::math::Transform>,class openvdb::v11_0::points::NullFilter const &,struct openvdb::v11_0::util::NullInterrupter *)" (??$rasterizeSmoothSpheres@V?$Grid@V?$Tree@V?$RootNode@V?$InternalNode@V?$InternalNode@V?$PointDataLeafNode@U?$PointIndex@I$00@v11_0@openvdb@@$02@points@v11_0@openvdb@@$03@tree@v11_0@openvdb@@$04@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@v11_0@openvdb@@U?$TypeList@MHV?$Vec3@M@math@v11_0@openvdb@@@23@MV?$Grid@V?$Tree@V?$RootNode@V?$InternalNode@V?$InternalNode@V?$LeafNode@M$02@tree@v11_0@openvdb@@$03@tree@v11_0@openvdb@@$04@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@23@VNullFilter@points@23@UNullInterrupter@util@23@@points@v11_0@openvdb@@YA?AV?$vector@V?$shared_ptr@VGridBase@v11_0@openvdb@@@std@@V?$allocator@V?$shared_ptr@VGridBase@v11_0@openvdb@@@std@@@2@@std@@AEBV?$Grid@V?$Tree@V?$RootNode@V?$InternalNode@V?$InternalNode@V?$PointDataLeafNode@U?$PointIndex@I$00@v11_0@openvdb@@$02@points@v11_0@openvdb@@$03@tree@v11_0@openvdb@@$04@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@tree@v11_0@openvdb@@@12@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@4@NNAEBV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@4@NV?$shared_ptr@VTransform@math@v11_0@openvdb@@@4@AEBVNullFilter@012@PEAUNullInterrupter@util@12@@Z)
Projects\OaSiS\Debug\oasis.exe : fatal error LNK1120: 2 unresolved externals
ninja: build stopped: subcommand failed.

Describe the bug

When building openvdb without explicit instantiation some functions are unresolved. This does not occure when compiling with explicit instantiation.

To Reproduce

Steps to reproduce the behavior: Following build-script was used for compiling:

@echo off
setlocal
cd /d %~dp0
reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > NUL && set arch_command_length=32 || set arch_command_length=64
echo "%PROCESSOR_ARCHITECTURE%" | find /i "arm" > NUL && goto ARM || goto AMD

:ARM
IF %arch_command_length% == 32 (
    set arch_string=x86_arm
    set arch_command_length_string=x86
) ELSE (
    set arch_string=amd64_arm64
    set arch_command_length_string=x64
)
goto VC_VARC_INIT
:AMD
IF %arch_command_length% == 32 (
    set arch_string=x86
    set arch_command_length_string=x86
) ELSE (
    set arch_string=amd64
    set arch_command_length_string=x64
)
goto VC_VARC_INIT
:VC_VARC_INIT
call vcvarsall.bat %arch_string% -vcvars_ver=
set compiler_path=%VCToolsInstallDir%\bin\Host%arch_command_length_string%\%arch_command_length_string%\cl.exe
set linker_path=%VCToolsInstallDir%\bin\Host%arch_command_length_string%\%arch_command_length_string%\link.exe
set archiver_path=%VCToolsInstallDir%\bin\Host%arch_command_length_string%\%arch_command_length_string%\lib.exe
REM No shared libs to avoid exceeding the number of objects allowed in an object file https://gitlab.kitware.com/cmake/cmake/-/issues/17841
call "%DevEnvDir%\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe" -G "Ninja Multi-Config" -DBUILD_SHARED_LIBS=OFF -DUSE_EXPLICIT_INSTANTIATION=OFF -DTBB_LIBRARYDIR="%ONEAPI_ROOT%\tbb\latest\lib\intel64\vc_mt" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_AR:FILEPATH="%archiver_path%" -DCMAKE_LINKER:FILEPATH="%linker_path%" -DCMAKE_INSTALL_PREFIX:PATH="%CD%\out\install" -DCMAKE_CXX_COMPILER:FILEPATH="%compiler_path%" -DCMAKE_C_COMPILER:FILEPATH="%compiler_path%" -DCMAKE_MAKE_PROGRAM="%DevEnvDir%\COMMONEXTENSIONS\MICROSOFT\CMAKE\Ninja\ninja.exe" "%CD%\.."
call "%DevEnvDir%\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe" --build . --target install --config Debug

It occures in code with the following function:

void end_write_vdb(const std::string& filename, openvdb::points::PointDataGrid::Ptr point_grid, openvdb::tools::PointIndexGrid::Ptr point_index_grid, const std::string& radius_name = std::string {"radius"}) {
    //Retrieve attribute names
    const openvdb::points::AttributeSet attributes = point_grid->tree().beginLeaf()->attributeSet();

    std::vector<std::string> attribute_names(attributes.descriptor().map().size());
    std::transform(std::execution::par_unseq, attributes.descriptor().map().begin(), attributes.descriptor().map().end(), attribute_names.begin(), [](const auto& entry){
        return std::get<0>(entry);
    });

    //Convert to volume
    openvdb::GridPtrVec grids = openvdb::points::rasterizeSmoothSpheres<openvdb::points::PointDataGrid, openvdb::TypeList<float, int, openvdb::Vec3f>, float, openvdb::FloatGrid>(*point_grid, radius_name, 1.0, 0.4, attribute_names);
    //openvdb::GridPtrVec grids = openvdb::points::rasterizeSpheres<openvdb::points::PointDataGrid, openvdb::TypeList<float, int, openvdb::Vec3f>, float, openvdb::FloatGrid>(*point_grid, radius_name, attribute_names, 1.0);

    // Create a VDB file object.
        openvdb::io::File file(filename);

        // Write out the contents of the container.
        file.write(grids);
        file.close();
}

The issue does not occure when outcommenting the rasterizeSpheres call. The issue does occure for both dynamic and shared libraries.

Expected behavior

All references should be resolved

Additional context

It's probably not connected, but when compiling openvdb in release configuration memory corruption errors occure (like during the call of AttributeSet::Descriptor::create the argument gets invalid). I guess that's an compiler failure. It does not occure with debug build (without explicit instantiations because unfortunatly the library gets too big).

Destranix commented 10 months ago

Okay, I resolved the issue. It was some kind of wrong usage: I was building the project in one folder, the copying the libraries to another folder. I did not copy the include files cause I assumed they were the same for all configurations. But they are not, they differ depending on the explicit instantiation macros.

Maybe one can create some kind of goard that rechecks the headers version before usage? At least fopr some cases?

Also some other thing that possobly would have avoided the thing to happen for me: I did not directly copy the files from the install folder, cause there were files missing in there (like .pdb) and the debug libraries had the same name as the release libraries (which makes it unsure to know which ones are currently installed). So maybe one could: