error LNK2005: "class Lite_Sparse_Matrix * m_sparse_matrix" (?m_sparse_matrix@@3PEAVLite_Sparse_Matrix@@EA) 已经在 gauss.cpp.obj 中定义
error LNK2005: "class Eigen::Matrix<double,-1,-1,0,-1,-1> V" (?V@@3V?$Matrix@N$0?0$0?0$0A@$0?0$0?0@Eigen@@A) 已经在 main.cpp.obj 中定义
error LNK2005: "class Eigen::Matrix<int,-1,-1,0,-1,-1> F" (?F@@3V?$Matrix@H$0?0$0?0$0A@$0?0$0?0@Eigen@@A) 已经在 main.cpp.obj 中定义
error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > file" (?file@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A) 已经在 main.cpp.obj 中定义
从错误提示可以看出是重定义的错误
本人遇到的问题是在不同的cpp文件中定义了一些相同名称的全局变量,毕竟只要不在函数内部的变量都是全局变量
从错误提示class Eigen::Matrix<double,-1,-1,0,-1,-1> V可以看出是重定义了一个MatrixXd类型的变量V
从错误提示class Eigen::Matrix<int,-1,-1,0,-1,-1> F可以看出是重定义了一个MatrixXi类型的变量F
从错误提示class std::basic_string<char,struct std::char_traits,class std::allocator > file可以看出是重定义了一个string类型的变量file
本人通过将上述变量分别改一个名字,即改为V1、F1、file1就解决了相应的重定义错误
对于错误提示class Lite_Sparse_Matrix * m_sparse_matrix重定义,本人发现并没有与之重名的全局变量,本人将Lite_Sparse_Matrix* m_sparse_matrix的定义由optimize_normal.h文件改为放入对应的使用m_sparse_matrix变量的optimize_normal.cpp文件就解决了问题