Hello,
this is due to an old compiler issue in older versions of Visual Studio.
The reason are include guards in forwards.h of the form
#if !defined(_MSC_VER) || defined(__CUDACC__)
for inner_prod() and others.
You can try to remove the '!defined(_MSC_VER)' part, which may lead to a
successful compilation. I haven't tested compilation under Visual Studio
2022, so maybe there are other things needed as well.
Best regards,
Karl
On 2/5/25 4:47 PM, Lennert Schneider wrote:
Hello,
I'm trying to use ViennaCL 1.7.1 for the first time, but I'm getting the following
error as soon as I include `#include <viennacl/vector.hpp>` in my cpp file:
```
1>C:\dev\3rdparty\ViennaCL-1.7.1\viennacl\scalar.hpp(99,23): error C2039:
'inner_prod_cpu': is not a member of 'viennacl::linalg'
1>(compiling source file 'PressureSolverViennaCl.cpp')
1>
C:\dev\3rdparty\ViennaCL-1.7.1\viennacl\linalg\scalar_operations.hpp(47,13):
1> see declaration of 'viennacl::linalg'
1> C:\dev\3rdparty\ViennaCL-1.7.1\viennacl\scalar.hpp(99,23):
1> the template instantiation context (the oldest one first) is
1> C:\dev\3rdparty\ViennaCL-1.7.1\viennacl\scalar.hpp(82,7):
1> while compiling class template partial specialization
'viennacl::scalar_expression<LHS,RHS,viennacl::op_inner_prod>'
1>C:\dev\3rdparty\ViennaCL-1.7.1\viennacl\scalar.hpp(132,23): error C2039:
'norm_1_cpu': is not a member of 'viennacl::linalg'
1>(compiling source file 'PressureSolverViennaCl.cpp')
1>
C:\dev\3rdparty\ViennaCL-1.7.1\viennacl\linalg\scalar_operations.hpp(47,13):
1> see declaration of 'viennacl::linalg'
1> C:\dev\3rdparty\ViennaCL-1.7.1\viennacl\scalar.hpp(132,23):
1> the template instantiation context (the oldest one first) is
1> C:\dev\3rdparty\ViennaCL-1.7.1\viennacl\scalar.hpp(115,7):
1> while compiling class template partial specialization
'viennacl::scalar_expression<LHS,RHS,viennacl::op_norm_1>'
1>C:\dev\3rdparty\ViennaCL-1.7.1\viennacl\scalar.hpp(164,23): error C2039:
'norm_2_cpu': is not a member of 'viennacl::linalg'
1>(compiling source file 'PressureSolverViennaCl.cpp')
1>
C:\dev\3rdparty\ViennaCL-1.7.1\viennacl\linalg\scalar_operations.hpp(47,13):
1> see declaration of 'viennacl::linalg'
1> C:\dev\3rdparty\ViennaCL-1.7.1\viennacl\scalar.hpp(164,23):
1> the template instantiation context (the oldest one first) is
1> C:\dev\3rdparty\ViennaCL-1.7.1\viennacl\scalar.hpp(147,7):
1> while compiling class template partial specialization
'viennacl::scalar_expression<LHS,RHS,viennacl::op_norm_2>'
```
among many others. It seems the implementations can not be found.
I define `VIENNACL_WITH_OPENMP` and add `C:\dev\3rdparty\ViennaCL-1.7.1` as
additional include directory.
I'm using VisualStudio2022 under Win11 running in Parallels (therefore I have
no OpenCL and no CUDA available, but I'm just looking for a multi-threaded CPU
implementation).
Strangely enough I can build all of ViennaCL using CMake and VisualStudio2022
just fine.
What could be the problem here ?
Can someone help me with this ?
Best regards,
Lennert
_______________________________________________
ViennaCL-support mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/viennacl-support
_______________________________________________
ViennaCL-support mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/viennacl-support