Как зависеть от SFML в библиотеке C++ [решено]C++

Программы на C++. Форум разработчиков
Anonymous
 Как зависеть от SFML в библиотеке C++ [решено]

Сообщение Anonymous »

Я пытаюсь создать библиотеку на C++, основанную на SFML. Планируется сохранить игровой движок в виде библиотеки, которую затем можно будет использовать в нескольких проектах для запуска разных игр, которые я создаю. Я попытался включить SFML в свою библиотеку, как это обычно делается для .exe, но получил около 70 таких ошибок
Severity Code Description Project File Line Suppression State
Error C2589 '(': illegal token on right side of '::' vastengine C:\dev\SFML-2.5.1\include\SFML\Graphics\Rect.inl 84

Почему это происходит и как я могу включить SFML (и в свою библиотеку, и в игру), чтобы он хорошо сочетался со странной цепочкой зависимостей, которую я создаю?
Вот минимальный воспроизводимый пример того, что происходит в моей библиотеке:
gameengine.hpp
#pragma once

#ifdef GAMEENGINE_EXPORTS
#define GAMEENGINE_API __declspec(dllexport)
#else
#define GAMEENGINE_API __declspec(dllimport)
#endif

extern "C" GAMEENGINE_API void GameEngineRun();

gameengine.cpp
#include "pch.h"
#include "gameengine.hpp"

#define SFML_STATIC
#include

void GameEngineRun() {
sf::RenderWindow window(sf::VideoMode(1920, 1080), "SFML window", sf::Style::Close | sf::Style::Resize);

while (window.isOpen())
{
// Handle events
sf::Event evnt;
while (window.pollEvent(evnt))
{
if (evnt.type == sf::Event::Closed) {
exit(1);
}
}

sf::RectangleShape square;
square.setSize(sf::Vector2f(100, 100));
square.setPosition(sf::Vector2f(100, 100));
window.clear();
window.draw(square);
}
}

В моих «Дополнительных каталогах включения»: C:\dev\SFML-2.5.1\include
Ошибки в В журнале вывода много подобных журналов для файла Rect.inl:
1>C:\dev\SFML-2.5.1\include\SFML\Graphics\Rect.inl(116,21): message : error recovery skipped: ')'
1>C:\dev\SFML-2.5.1\include\SFML\Graphics\Rect.inl(117,21): error C2589: '(': illegal token on right side of '::'
1>C:\dev\SFML-2.5.1\include\SFML\Graphics\Rect.inl(117,21): error C2760: syntax error: ')' was unexpected here; expected ';'
1>C:\dev\SFML-2.5.1\include\SFML\Graphics\Rect.inl(117,21): error C3878: syntax error: unexpected token ')' following 'expression_statement'


Подробнее здесь: https://stackoverflow.com/questions/790 ... y-c-solved

Вернуться в «C++»