PixarAnimationStudios / OpenSubdiv

An Open-Source subdivision surface library.
graphics.pixar.com/opensubdiv
Other
2.9k stars 561 forks source link

Linker Tools Error dxPtexViewer #1154

Closed jonassorgenfrei closed 2 years ago

jonassorgenfrei commented 5 years ago

Hey,

I've got compilation complications when trying to compile dxPtexViewer for Windows 10.

Error LNK2019 Reference to undefined symbol ""public: void cdecl OpenSubdiv::v3_4_0::Osd::CLD3D11VertexBuffer::UpdateData(float const ,int,int,struct _cl_command_queue )" (?UpdateData@CLD3D11VertexBuffer@Osd@v3_4_0@OpenSubdiv@@QEAAXPEBMHHPEAU_cl_command_queue@@@Z)" in Funktion ""public: virtual void cdecl OpenSubdiv::v3_4_0::Osd::Mesh<class OpenSubdiv::v3_4_0::Osd::CLD3D11VertexBuffer,class OpenSubdiv::v3_4_0::Osd::CLStencilTable,class OpenSubdiv::v3_4_0::Osd::CLEvaluator,class OpenSubdiv::v3_4_0::Osd::D3D11PatchTable,class CLD3D11DeviceContext>::UpdateVaryingBuffer(float const *,int,int)" (?UpdateVaryingBuffer@?$Mesh@VCLD3D11VertexBuffer@Osd@v3_4_0@OpenSubdiv@@VCLStencilTable@234@VCLEvaluator@234@VD3D11PatchTable@234@VCLD3D11DeviceContext@@@Osd@v3_4_0@OpenSubdiv@@UEAAXPEBMHH@Z)". dxPtexViewer D:\Bibliotheken\OpenSubdiv\build\examples\dxPtexViewer\dxPtexViewer.obj 1

Error LNK2019 Reference to undefined symbol ""public: struct _cl_mem __cdecl OpenSubdiv::v3_4_0::Osd::CLD3D11VertexBuffer::BindCLBuffer(struct _cl_command_queue )" (?BindCLBuffer@CLD3D11VertexBuffer@Osd@v3_4_0@OpenSubdiv@@QEAAPEAU_cl_mem@@PEAU_cl_command_queue@@@Z)" in Funktion ""public: bool __cdecl OpenSubdiv::v3_4_0::Osd::CLEvaluator::EvalStencils<class OpenSubdiv::v3_4_0::Osd::CLD3D11VertexBuffer,class OpenSubdiv::v3_4_0::Osd::CLD3D11VertexBuffer,class OpenSubdiv::v3_4_0::Osd::CLStencilTable>(class OpenSubdiv::v3_4_0::Osd::CLD3D11VertexBuffer ,struct OpenSubdiv::v3_4_0::Osd::BufferDescriptor const &,class OpenSubdiv::v3_4_0::Osd::CLD3D11VertexBuffer ,struct OpenSubdiv::v3_4_0::Osd::BufferDescriptor const &,class OpenSubdiv::v3_4_0::Osd::CLStencilTable const ,unsigned int,struct _cl_event const ,struct _cl_event *)const " (??$EvalStencils@VCLD3D11VertexBuffer@Osd@v3_4_0@OpenSubdiv@@V1234@VCLStencilTable@234@@CLEvaluator@Osd@v3_4_0@OpenSubdiv@@QEBA_NPEAVCLD3D11VertexBuffer@123@AEBUBufferDescriptor@123@01PEBVCLStencilTable@123@IPEBQEAU_cl_event@@PEAPEAU7@@Z)". dxPtexViewer D:\Bibliotheken\OpenSubdiv\build\examples\dxPtexViewer\dxPtexViewer.obj 1

Error LNK2019 Reference to undefined symbol ""public: struct ID3D11Buffer __cdecl OpenSubdiv::v3_4_0::Osd::CLD3D11VertexBuffer::BindD3D11Buffer(struct ID3D11DeviceContext )" (?BindD3D11Buffer@CLD3D11VertexBuffer@Osd@v3_4_0@OpenSubdiv@@QEAAPEAUID3D11Buffer@@PEAUID3D11DeviceContext@@@Z)" in Funktion ""public: virtual struct ID3D11Buffer * __cdecl OpenSubdiv::v3_4_0::Osd::Mesh<class OpenSubdiv::v3_4_0::Osd::CLD3D11VertexBuffer,class OpenSubdiv::v3_4_0::Osd::CLStencilTable,class OpenSubdiv::v3_4_0::Osd::CLEvaluator,class OpenSubdiv::v3_4_0::Osd::D3D11PatchTable,class CLD3D11DeviceContext>::BindVaryingBuffer(void)" (?BindVaryingBuffer@?$Mesh@VCLD3D11VertexBuffer@Osd@v3_4_0@OpenSubdiv@@VCLStencilTable@234@VCLEvaluator@234@VD3D11PatchTable@234@VCLD3D11DeviceContext@@@Osd@v3_4_0@OpenSubdiv@@UEAAPEAUID3D11Buffer@@XZ)". dxPtexViewer D:\Bibliotheken\OpenSubdiv\build\examples\dxPtexViewer\dxPtexViewer.obj 1

Error LNK2019 Reference to undefined symbol ""public: static class OpenSubdiv::v3_4_0::Osd::CLD3D11VertexBuffer __cdecl OpenSubdiv::v3_4_0::Osd::CLD3D11VertexBuffer::Create(int,int,struct _cl_context ,struct ID3D11DeviceContext *)" (?Create@CLD3D11VertexBuffer@Osd@v3_4_0@OpenSubdiv@@SAPEAV1234@HHPEAU_cl_context@@PEAUID3D11DeviceContext@@@Z)" in Funktion ""void __cdecl createOsdMesh(int,int)" (?createOsdMesh@@YAXHH@Z)". dxPtexViewer D:\Bibliotheken\OpenSubdiv\build\examples\dxPtexViewer\dxPtexViewer.obj 1

I'm not quite sure if it's a general problem or just a wrong setup in my system.

Best Jonas

davidgyu commented 5 years ago

Hi Jonas,

Can you tell us more about the system and configuration you are testing, i.e. Windows 10 version, VS version, gfx vendor and version, and OpenCL implementation?

It's possible that it is a setup problem. We've tested 3.4.0 on Windows 10 1903 w/ VS2015 and VS2017 and NVIDIA's CUDA 10 to provide CUDA and OpenCL implementations on NVIDIA GTX 2080 Ti. We've also tested the OpenCL kernel implementation on Linux and macOS, but it looks like you are hitting this link error with the DX11 examples.

Thanks! -David

jilliene commented 5 years ago

Filed as internal issue #OSD-299

jonassorgenfrei commented 5 years ago

Hey David,

Thanks for your answer. I'm using Windows 10.0.17763, VS2019 and NVIDIA RTX 2080TI (431.70). I figgured out what the problem is. Since I am using an AMD CPU, I couldn't install the Intel OpenCL SDK, i manually tried linking the AMD opencl.lib SKD. Unfortunately that raised the error. So I guess, without Intel SDK I probably won't be able to build the dxPtexViewer Sample right?

Best Regards Joans

davidgyu commented 2 years ago

I think that's right. This is working correctly in our limited testing with vendor provided OpenCL SDKs. Marking this closed, but please reopen or file a new ticket if this is still a problem. Thanks!

jonassorgenfrei commented 8 months ago

Hey

I'd like to reopen this ticket as i still having this issue unfortunatly. I just tried to build the library and again hang at building dxPtexViewer. Are there any solutions to this yet.

It's still the linking issue for dxPtexViewer which can't resolve the symbols:

public: void cdecl OpenSubdiv::v3_6_0::Osd::CLD3D11VertexBuffer::UpdateData(float const ,int,int,struct _cl_command_queue ) public: struct _cl_mem __cdecl OpenSubdiv::v3_6_0::Osd::CLD3D11VertexBuffer::BindCLBuffer(struct _cl_command_queue ) public: struct ID3D11Buffer * cdecl OpenSubdiv::v3_6_0::Osd::CLD3D11VertexBuffer::BindD3D11Buffer(struct ID3D11DeviceContext ) public: static class OpenSubdiv::v3_6_0::Osd::CLD3D11VertexBuffer __cdecl OpenSubdiv::v3_6_0::Osd::CLD3D11VertexBuffer::Create(int,int,struct _cl_context ,struct ID3D11DeviceContext )

Here's my CMake config: grafik

Thanks for you help in advance :)

Cheers Jonas