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

Reply via email to