не может скомпилировать C ++ / SFML DLL. Как исправить? - PullRequest
0 голосов
/ 29 апреля 2020

Я не смог опубликовать это сообщение здесь, так как получил сообщение об ошибке. Ваше сообщение содержит код, который неправильно отформатирован как код. Итак, я сделаю весь текст в виде кода. Сожалею. Модераторы, поправьте пожалуйста. Привет. Я начал пытаться разработать игровой движок. В результате я не могу скомпилировать! Скажите, пожалуйста, что нужно исправить или добавить, чтобы я мог скомпилировать DLL? Я отмечаю, что я новичок в C ++, и это моя первая попытка создать библиотеку DLL в C ++. Так. В проекте есть следующие CPP файлы: dllmain. cpp (генерируется VS), Engine. cpp, pch. cpp, World Game Engine. cpp. Проект имеет заголовочный файл Engine.h. Код Engine.h: однажды #pragma #include

using namespace sf;

class Engine
{
private:

    RenderWindow m_Window;

    void input();
    void update(float dtAsSeconds);
    void draw();

public:
    Engine();

    void start();

};
Code of Engine.cpp:
#include "stdafx.h"
#include "Engine.h"
#include "pch.h"

Engine::Engine()
{
    Vector2f resolution;
    resolution.x = VideoMode::getDesktopMode().width;
    resolution.y = VideoMode::getDesktopMode().height;

    m_Window.create(VideoMode(resolution.x, resolution.y),
        "World Game Engine",
        Style::Fullscreen);

}

void Engine::start()
{
    Clock clock;

    while (m_Window.isOpen())
    {
        Time dt = clock.restart();
        float dtAsSeconds = dt.asSeconds();
        input();
        update(dtAsSeconds);
        draw();
    }
}
Code of World Game Engine.cpp:
#include "stdafx.h"
#include "Engine.h"
#include "pch.h"


int init()
{
    Engine engine;

    engine.start();

    return 0;
}

So, I get a lot of errors.
I can’t create a screenshot because I have a Russian version of VS. But if necessary, I can switch to the English version and take a screenshot.
SFML has been linked.
Thanks in advance!

1 Ответ

0 голосов
/ 29 апреля 2020

И stdafx.h, и pch.h - это скомпилированные заголовки, которые Visual Studio создает для вас при запуске проекта. Насколько я знаю, единственное отличие (но здесь я могу ошибаться) состоит в том, что в зависимости от версии VS он либо создает stdafx.h (более старая версия), либо pch.h (более новые). Вы должны только #include заголовочные файлы, которые существуют в вашем дереве проекта. Проверьте еще раз и удалите один из #include, в зависимости от того, какой файл заголовка у вас есть.

Избегайте пробелов в именах файлов заголовка (.h) и файлов реализации (. cpp). Ваш игровой движок World. cpp должен быть World_Game_Engine. cpp

После этого список включения в dllmain. cpp (основной. cpp файл) должен выглядеть следующим образом:

        #include "pch.h"
        #include "Engine.h"
        #include ... any other .h file you use

Удачи!

...