Intel® C++ Compiler
Support and discussions for creating C++ code that runs on platforms based on Intel® processors.
7699 Discussions

Minimal symbol differences between msvc and icc

Steven_K
Beginner
173 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 II
173 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.

 

 

Reply