gpt4 book ai didi

c++ - 在 Windows 上编译错误 C2131 和 C3863,但在 Linux 上没有

转载 作者:行者123 更新时间:2023-12-02 09:57:23 26 4
gpt4 key购买 nike

<分区>

我有一段代码可以在 Linux (Raspbian) 上编译并正常工作,但不能在 Windows (VS 17) 上编译。

我正在使用 CMAKE 3 进行跨平台编译,正如我所说,我在 Linux 上构建它没有问题。

这是我使用的唯一 CMAKE 选项:

cmake_minimum_required(VERSION 3.1)
project(Track)
set (CMAKE_CXX_STANDARD 11)
...
// The rest of the CMakeLists.txt has nothing fancy

但在 Windows 下(使用 VS 17 native 编译器),有一段代码甚至无法构建,我不明白为什么。我得到的错误是(抱歉,它是法语的,但我认为很容易理解):

error C2131: l'expression n'a pas été évaluée en constante    
note: échec en raison de l'appel d'une fonction indéfinie ou 'constexpr' non déclarée
note: voir l'utilisation de 'std::vector<ROI,std::allocator<_Ty>>::size'
error C3863: le type de tableau 'float ['fonction'+]['fonction'+]' n'est pas attribuable

以及导致错误的(简化的)代码段:

// Defined somewhere else
class ROI
{
}

class Tracker
{
public:
void UpdateTrack(vector<ROI> new_roi)
{
// some code
float match_table[new_roi.size() + 1][m_tracked_roi.size() + 1]; // COMPILE ERROR
// some code
}

private:
vector<ROI> m_tracked_roi;
}

我认为问题在于数组的大小只在编译时或类似的时候才知道,但现在使用 c++ 是可能的,并且它在 Linux 上工作正常(工作我的意思是它构建和运行良好) .

谁能给我解释一下这是怎么回事?以及如何在 Windows 上解决这个问题? (可能是一些额外的 CMake 选项?)

提前致谢

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com