Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.
7956 Discussions

Minimal symbol differences between msvc and icc

Steven_K
Beginner
444 Views

ICC latest
??R?$AdjustContrastv2@UGpuDevice@Eigen@@@functor@tensorflow@@QEAAXAEBUGpuDevice@Eigen@@V?$TensorMap@V?$Tensor@$$CBM$03$00_J@Eigen@@$0BA@UMakePointer@2@@4@V?$TensorMap@V?$TensorFixedSize@$$CBMU?$Sizes@$$V@Eigen@@$00_J@Eigen@@$0BA@UMakePointer@2@@4@V?$TensorMap@V?$Tensor@M$03$00_J@Eigen@@$0BA@UMakePointer@2@@4@@Z

MSVC latest
??R?$AdjustContrastv2@UGpuDevice@Eigen@@@functor@tensorflow@@QEAAXAEBUGpuDevice@Eigen@@V?$TensorMap@V?$Tensor@$$CBM$03$00_J@Eigen@@$0BA@UMakePointer@2@@4@V?$TensorMap@V?$TensorFixedSize@$$CBMU?$Sizes@$S@Eigen@@$00_J@Eigen@@$0BA@UMakePointer@2@@4@V?$TensorMap@V?$Tensor@M$03$00_J@Eigen@@$0BA@UMakePointer@2@@4@@Z

The differences are marked.

'Sizes' struct is defined like this:
template <typename std::ptrdiff_t... Indices>
struct Sizes {...}

This is a problem, because I can't use ICC as host compiler for CUDA in windows, so there will be mismatches in the symbols which leads to linker errors.
It was asked a lot of times, but we still have no real ICC support for CUDA. 

 

0 Kudos
1 Reply
AndrewC
New Contributor III
444 Views

I had a similar issue with OpenMesh 6.3. I needed to compile both OpenMesh and my code with the Intel Compiler to avoid link errors.

You could not, for example, compile OpenMesh with MSVC and client code with ICC without getting link errors with one particular C++ class/struct.

 

 

0 Kudos
Reply