Основанная на DirectX структура в заголовочном файле

0

Я относительно новичок в c++, и я пытаюсь создать структуру, доступную из нескольких c++ файлов. Для этого я пишу его в файле заголовка. Однако для структуры требуются идентификаторы из библиотеки DirectX, а именно "xnamath.h".

Моя структура выглядит следующим образом

struct Vertex
{
    Vertex(){}
    Vertex(float x, float y, float z,
        float u, float v)
        : pos(x,y,z), texCoord(u,v){}
        XMFLOAT3 pos;
    XMFLOAT2 texCoord;
};

Я попытался включить заголовочный файл xnamath в свой заголовочный файл resource.h, но это привело к большему количеству ошибок, чем текущая проблема. Структура требуется всем файлам и поэтому не может быть переопределена в каждом файле.cpp, насколько мне известно.

Любая помощь будет принята с благодарностью, спасибо людям!

  • 0
    Является ли resource.h файлом, который вы показали? Если нет, #include <xnamath.h"> в вышеуказанном файле.
  • 0
    Нет, это содержится в resource.h, хотя я пробовал структуру в файле .cpp, и она правильно компилируется, но только локально.
Теги:
struct
directx
header-files
xna-math-library

1 ответ

0

По-видимому, у меня недостаточно репутации, чтобы комментировать, поэтому вот несколько идей/вопросов:

  • У вас есть предварительно скомпилированный заголовок (например, stdafx.h обычно, или DXUT.h)? Если это так, возможно, включение включения будет работать;
  • Если вы включили resource.h везде: есть ли файл и объявление ifndef? если нет, возможно, ошибка возникает из нескольких объявлений одной и той же структуры. Возможно, попробуйте что-то вроде:

    #ifndef _RESOURCE_H_
    #define _RESOURCE_H_
    
    // Includes you already had
    #include "xnamath.h"
    
    // Stuff you already had
    // Your vertex structure
    
    #endif
    

Надеюсь это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню