C++ 创建一个常数特征(特征库)矩阵

C++ 创建一个常数特征(特征库)矩阵,c++,vector,constants,eigen,abaqus,C++,Vector,Constants,Eigen,Abaqus,我在头文件中定义一些常量特征向量(Eigen.tuxfamily.org)时遇到了一个问题,但很明显,这更像是一个编译器问题,而不是特定于特征的问题 在头文件中定义此项: const double[] hardcodedData = {1,2,3}; const Vector3d myConstVector(hardcodedData); 通过cython/distutils(我用于测试)使用Microsoft VC2010可以完美工作。 包含头文件后,我可以从每个函数/方法/任何内容访问my

我在头文件中定义一些常量特征向量(Eigen.tuxfamily.org)时遇到了一个问题,但很明显,这更像是一个编译器问题,而不是特定于特征的问题

在头文件中定义此项:

const double[] hardcodedData = {1,2,3};
const Vector3d myConstVector(hardcodedData);
通过cython/distutils(我用于测试)使用Microsoft VC2010可以完美工作。 包含头文件后,我可以从每个函数/方法/任何内容访问myConstVectory,并将其用于计算

将相同的代码用于:

针对x64的Microsoft(R)C/C++优化编译器版本17.00.50727.1

由有限元软件ABAQUS 6.13-2调用

每个常量向量都初始化为零!到目前为止,我还没有找到任何解决方法,除了使用类似的方法:

const Vector3d myConstVector()
{
    const static Vector3d vec(hardcodedData);
    return vec;
}
这个解决方法还可以,但不是我想要做的。。它也有一些开销


是否有一个干净的解决方案来运行“硬编码”选项?提前谢谢

在用于x86(VS2012)的17.00.61030版本中似乎工作正常,尽管我的代码行读作
constdouble-hardcodedData[]={1,2,3}。在VS2012中创建一个简单的控制台应用程序,它也可以完美工作,所以我认为某种编译器设置一定是原因。这真是一个akward问题。然后,您必须从ABAQUS环境文件中提供编译器设置:
compile\u cpp=[cl'、/c'、/W0'、/MD'、/TP'、/EHsc'、/DNDEBUG'、/DWIN32'、/DTP_-IP'、/D_-CONSOLE'、/DNTI'、/DFLT_-LIC'、/DOL_-DOC'、/D_-LIB_uuuuuuuuuuuuuuuuuuuuu'、/DHKS_u-NT'、/DABQ_u-ntiu-NET'、/DFAR=、/D_WINDOWS'、/DABQ_u-winuu-64'、/DABQ_uuu-winuuu-64'、/vs817; vs17.2012版似乎都能很好地用于VS6100(2012年版),虽然我的行读起来是
constdouble-hardcodedData[]={1,2,3};
。在VS2012中创建一个简单的控制台应用程序,它也工作得很好,所以我认为某种编译器设置一定是原因。这确实是一个akward问题。然后你必须从ABAQUS环境文件中提供编译器设置:
compile\u cpp=[cl'、/c'、/W0'、/MD'、/TP'、/EHsc'、/DNDEBUG'、/DWIN32'、/DTP_IP'、/D_控制台'、/DNTI'、/DFLT_LIC'、/DOL_DOC'、/D_LIB_'、/DHKS_NT'、/DABQ_NTI NET'、/DFAR='、/D_WINDOWS'、/DABQ_winu 64'、/O1'#