开发者

VC++: Weird compiler errors

开发者 https://www.devze.com 2023-04-04 01:22 出处:网络
I\'m working in visual studio with DirectX and today I\'ve gotten some weird compiler errors that don\'t make any sense (to me at least)...

I'm working in visual studio with DirectX and today I've gotten some weird compiler errors that don't make any sense (to me at least)...

These are the errors I get:

error C2143: syntax error : missing ';' before '.' error C2059: syntax error开发者_StackOverflow社区 : ')'

I've double checked my code and didn't spot any typos/mistakes (I could be wrong...)

I'm hoping that someone can tell me what the error usually means and where to look...

I'll put some code below with the indication of the line where the errors occur (in case you want to check)


Extra info: m_ImTexture2D is a member struct. Vertex.PosTex is a struct within a struct

GameManager.cpp:

(231): error C2143: syntax error : missing ';' before '.'
(231): error C2143: syntax error : missing ';' before '.'
(232): error C2143: syntax error : missing ';' before '{'
(233): error C2143: syntax error : missing ';' before '}'
(233): error C2143: syntax error : missing ';' before ','
(234): error C2143: syntax error : missing ';' before '{'
(234): error C2143: syntax error : missing ';' before '}'
(234): error C2143: syntax error : missing ';' before ','
(235): error C2143: syntax error : missing ';' before '{'
(235): error C2143: syntax error : missing ';' before '}'
(235): error C2143: syntax error : missing ';' before ','
(237): error C2143: syntax error : missing ';' before '{'
(237): error C2143: syntax error : missing ';' before '}'
(237): error C2143: syntax error : missing ';' before ','
(238): error C2143: syntax error : missing ';' before '{'
(238): error C2143: syntax error : missing ';' before '}'
(238): error C2143: syntax error : missing ';' before ','
(239): error C2143: syntax error : missing ';' before '{'
(239): error C2143: syntax error : missing ';' before '}'
(246): error C2143: syntax error : missing ')' before '.'
(246): error C2143: syntax error : missing ';' before '.'
(246): error C2143: syntax error : missing ';' before '.'
(246): error C2059: syntax error : ')'
(249): error C2065: 'vertices' : undeclared identifier

bool GameManager::GMLoadImage(Image** ppImage, const char* pkcFilePath, ImageDesc* pImDesc)
{
    (*ppImage) = new Image();

    ID3D11ShaderResourceView** ppColorMap = (*ppImage)->GetppColorMap();


/// CREATE SHADER RESOURCE VIEW (from file) ///
    HRESULT result = D3DX11CreateShaderResourceViewFromFileA(m_pDevice,
                                                             pkcFilePath,
                                                             0,
                                                             0,
                                                             ppColorMap,
                                                             0);
    if (FAILED(result)) {
        MessageBoxA(NULL,"Error loading ShaderResourceView from file","Error",MB_OK);
        return false;
    }


/// RECEIVE TEXTURE DESC ///
    ID3D11Resource* pColorTex;
    (*ppColorMap)->GetResource(&pColorTex);
    ((ID3D11Texture2D*)pColorTex)->GetDesc(&((*ppImage)->GetColorTexDesc()));
    pColorTex->Release();

/// CREATE VERTEX BUFFER ///
    D3D11_TEXTURE2D_DESC colorTexDesc = (*ppImage)->GetColorTexDesc();
    float halfWidth = static_cast<float>(colorTexDesc.Width)/2.0f;
    float halfHeight = static_cast<float>(colorTexDesc.Height)/2.0f;

/*231*/ Vertex.PosTex vertices[]=
/*232*/ {
/*233*/     {XMFLOAT3( halfWidth, halfHeight, 1.0f ),   XMFLOAT2( 1.0f, 0.0f )},
/*234*/     {XMFLOAT3( halfWidth, -halfHeight, 1.0f ),  XMFLOAT2( 1.0f, 1.0f )},
/*235*/     {XMFLOAT3( -halfWidth, -halfHeight, 1.0f ), XMFLOAT2( 0.0f, 1.0f )},
/*236*/
/*237*/     {XMFLOAT3( -halfWidth, -halfHeight, 1.0f ), XMFLOAT2( 0.0f, 1.0f )},
/*238*/     {XMFLOAT3( -halfWidth, halfHeight, 1.0f ),  XMFLOAT2( 0.0f, 0.0f )},
/*239*/     {XMFLOAT3( halfWidth, halfHeight, 1.0f ),   XMFLOAT2( 1.0f, 0.0f )}
        };

        D3D11_BUFFER_DESC vertexDesc;
        ZeroMemory(&vertexDesc,sizeof(vertexDesc));
        vertexDesc.Usage = D3D11_USAGE_DEFAULT;
        vertexDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
/*246*/ vertexDesc.ByteWidth = sizeof(Vertex.PosTex)*6;

        D3D11_SUBRESOURCE_DATA resourceData;
/*249*/ resourceData.pSysMem = vertices;

    ID3D11Buffer** ppVBuffer = (*ppImage)->GetppVertexBuffer();
    result = m_pDevice->CreateBuffer(&vertexDesc,&resourceData,ppVBuffer);

    if (FAILED(result)) {
        MessageBoxA(NULL,"Error Creating VBuffer","Error",MB_OK);
        return false;
    }



/// SET POINTER TO IMAGEDESC
    ImageDesc** ppThisImDesc = (*ppImage)->GetppImageDesc();
    (*ppThisImDesc) = pImDesc;

    return true;
}

DxTetris.cpp:

(27): error C2143: syntax error : missing ')' before '.'
(27): error C2143: syntax error : missing ';' before '.'
(27): error C2143: syntax error : missing ';' before '.'
(27): error C2059: syntax error : ')'

bool DxTetris::LoadContent()
{
    GameManager::GMInitSingleton(m_pD3DDevice,m_pD3DContext,m_pBackBufferTarget);

    m_ImTexture2DDesc.Topology = D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST;
/*27*/m_ImTexture2DDesc.VertexSize = sizeof(Vertex.PosTex);

    //.....(code goes on)
}


In C++, the scope resolution operator is ::, not .; consequently, you need to use Vertex::PosTex rather than Vertex.PosTex.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号