在这种情况下如何解决这个[All]错误2 ?



所以我对一个简单张量的特征编码如下:

#define _USE_MATH_DEFINES
#include <iostream>
#include <cmath>
#include <Eigen/Dense>
#include <unsupported/Eigen/CXX11/Tensor>
using namespace Eigen;
using namespace std;
int main () {
Tensor<double, 3> A(4,5,6);  // 3 dimensions (4x5x6)
A.setZero();
A(0,1,2) = 1.7;
A(1,2,2) = -1.5;
cout<<A(1,2,2)<<endl;
return 0;
}

但随后我得到以下错误,我在互联网上寻找帮助,但遗憾的是我仍然无能为力。我的高级代码总是会出现这个错误,所以我决定编写一个小代码来测试何时会出现这个错误。注意:当我用特征矩阵做同样的事情时,我没有得到这个错误。只有当我换成张量的时候,才会得到这个错误。然后我把它变回一个矩阵然后我得到了同样的错误?然而,即使在我更高级的代码中,我甚至没有任何张量,但出于某种原因,仍然得到这个错误。有人能帮帮我吗,我快疯了?

C:WINDOWSsystem32cmd.exe /C C:/MinGW/bin/mingw32-make.exe -j4 SHELL=cmd.exe -e -f  Makefile
"----------Building project:[ Test - Debug ]----------"
mingw32-make.exe[1]: Entering directory 'C:/Users/RS3/Desktop/SCC HiWi/Code/C++/myGmm/UQ/Test'
mingw32-make.exe[1]: Leaving directory 'C:/Users/RS3/Desktop/SCC HiWi/Code/C++/myGmm/UQ/Test'
mingw32-make.exe[1]: Entering directory 'C:/Users/RS3/Desktop/SCC HiWi/Code/C++/myGmm/UQ/Test'
C:/MinGW/bin/g++.exe  -c  "C:/Users/RS3/Desktop/SCC HiWi/Code/C++/myGmm/UQ/Test/main.cpp" -std=c++14 -Wall -g -O0 -Wall  -o ./Debug/main.cpp.o -I. -I"C:UsersRS3DesktopSCC HiWiCodeC++myGmmUQeigen-3.3.9" -I"C:UsersRS3DesktopSCC HiWiCodeC++myGmmUQHalton" -I"C:UsersRS3DesktopSCC HiWiCodeC++myGmmUQquasimvnrnd" -I"C:UsersRS3DesktopSCC HiWiCodeC++myGmmUQdirentdirent-masterinclude"
In file included from C:/Users/RS3/Desktop/SCC HiWi/Code/C++/myGmm/UQ/Test/main.cpp:5:
C:UsersRS3DesktopSCC HiWiCodeC++myGmmUQeigen-3.3.9/unsupported/Eigen/CXX11/Tensor:53:17: error: conflicting declaration 'typedef long int int32_t'
typedef __int32 int32_t;
^~~~~~~
In file included from c:mingwlibgccmingw328.2.0includestdint.h:9,
from c:mingwlibgccmingw328.2.0includec++cstdint:41,
from c:mingwlibgccmingw328.2.0includec++bitschar_traits.h:501,
from c:mingwlibgccmingw328.2.0includec++ios:40,
from c:mingwlibgccmingw328.2.0includec++ostream:38,
from c:mingwlibgccmingw328.2.0includec++iostream:39,
from C:/Users/RS3/Desktop/SCC HiWi/Code/C++/myGmm/UQ/Test/main.cpp:2:
c:mingwincludestdint.h:62:15: note: previous declaration as 'typedef int int32_t'
typedef int   int32_t;
^~~~~~~
In file included from C:/Users/RS3/Desktop/SCC HiWi/Code/C++/myGmm/UQ/Test/main.cpp:5:
C:UsersRS3DesktopSCC HiWiCodeC++myGmmUQeigen-3.3.9/unsupported/Eigen/CXX11/Tensor:54:26: error: conflicting declaration 'typedef long unsigned int uint32_t'
typedef unsigned __int32 uint32_t;
^~~~~~~~
In file included from c:mingwlibgccmingw328.2.0includestdint.h:9,
from c:mingwlibgccmingw328.2.0includec++cstdint:41,
from c:mingwlibgccmingw328.2.0includec++bitschar_traits.h:501,
from c:mingwlibgccmingw328.2.0includec++ios:40,
from c:mingwlibgccmingw328.2.0includec++ostream:38,
from c:mingwlibgccmingw328.2.0includec++iostream:39,
from C:/Users/RS3/Desktop/SCC HiWi/Code/C++/myGmm/UQ/Test/main.cpp:2:
c:mingwincludestdint.h:63:19: note: previous declaration as 'typedef unsigned int uint32_t'
typedef unsigned  uint32_t;
^~~~~~~~
mingw32-make.exe[1]: *** [Debug/main.cpp.o] Error 1
Test.mk:97: recipe for target 'Debug/main.cpp.o' failed
mingw32-make.exe[1]: Leaving directory 'C:/Users/RS3/Desktop/SCC HiWi/Code/C++/myGmm/UQ/Test'
mingw32-make.exe: *** [All] Error 2
Makefile:4: recipe for target 'All' failed
====1 errors, 4 warnings====

更新:当我删除最后一个包含并再次做特征矩阵时,没有问题。问题是最后一个包含。但是没有它,我就不能处理张量。我该怎么做才能使张量没有误差呢?

你能告诉我们你的MinGW版本是从哪里来的吗?

问题是您的MinGW版本显然将__int32定义为long,但将int32_t定义为int,导致类型冲突。我们在Tensor模块中编写了一些代码,以确保int32_t总是在Windows上定义,因为Visual Studio在2010年之前实际上并没有提供stdint.h头文件。我们以前从未见过这引起的问题。我尝试了几个版本的MinGW, 32位和64位都有,但在我迄今为止尝试过的所有版本中,__int32始终是int

我在主分支上有一个潜在的修复:!373。一旦合并完成,我们就可以将更改反向移植到稳定的3.3分支。

如果你只是想启动和运行一些东西,你可以尝试安装一个不同版本的MinGW。

最新更新