c++ - 我收到“未解析的外部符号”错误,但它可以在 Visual Studio LNK2019/LNK 1120 中访问它们
问题描述
所以我只是想设置一个游戏循环和窗口,但它甚至不会从一个空白屏幕开始。当我运行它时,每次我尝试使用 SDL 中的任何函数时都会出现错误。我在与项目文件相同的文件夹和 Debug 文件夹中有 .dll。我很确定我也将它们链接到项目属性中,但我不知道。当我在视觉工作室时,我可以将鼠标悬停在函数上并且它有它们的声明(我认为)
SDL2\include 位于 VC++ 目录 -> 包含目录
SDL2\lib\x64 位于 VC++ 目录 -> 库目录中
SDL2\include 也在 C/C++ -> General -> Additional Include Directories 中
SDL2\lib\x64 也在链接器 -> 常规 -> 附加库目录中
SDL.lib 和 SDLmain.lib 都在 Linker -> Input -> Additional Dependencies
编辑:忘记显示项目属性
这是游戏.hpp
#include "SDL.h"
#include <iostream>
class Game
{
public:
Game();
~Game();
void init(const char* title, int xpos, int ypos, int width, int height, bool fullscreen);
void handleEvents();
void update();
void render();
void clean();
bool running() { return isRunning; }
private:
int cnt = 0;
bool isRunning;
SDL_Window *window;
SDL_Renderer *renderer;
};
这是游戏.cpp
#include "Game.hpp"
Game::Game()
{}
Game::~Game()
{}
void Game::init(const char *title, int xpos, int ypos, int width, int height, bool fullscreen)
{
int flags = 0;
if (fullscreen)
{
flags = SDL_WINDOW_FULLSCREEN;
}
if (SDL_Init(SDL_INIT_EVERYTHING) == 0)
{
std::cout << "Subsystems initialized" << std::endl;
window = SDL_CreateWindow(title, xpos, ypos, width, height, flags);
if (window)
{
std::cout << "Window created" << std::endl;
}
renderer = SDL_CreateRenderer(window, -1, 0);
if (renderer)
{
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
std::cout << "Renderer created" << std::endl;
}
isRunning = true;
} else {
isRunning = false;
}
}
void Game::handleEvents()
{
SDL_Event event;
SDL_PollEvent(&event);
switch (event.type)
{
case SDL_QUIT:
isRunning = false;
break;
default:
break;
}
}
void Game::update()
{
cnt++;
std::cout << cnt << std::endl;
}
void Game::render()
{
SDL_RenderClear(renderer);
//add stuff to render
SDL_RenderPresent(renderer);
}
void Game::clean()
{
SDL_DestroyWindow(window);
SDL_DestroyRenderer(renderer);
SDL_Quit();
std::cout << "Game cleaned" << std::endl;
}
这是 main.cpp
#include "Game.hpp"
Game *game = nullptr;
int main(int argc, char *argv[]) {
game = new Game();
game->init("Maxgame", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, false);
while (game->running()) {
game->handleEvents();
game->update();
game->render();
}
game->clean();
return 0;
}
这些是 我得到的错误。
解决方案
推荐阅读
- r - 客户定义的函数在 dplyr 中使用时返回错误
- c# - 我正在尝试通过 C# 代码访问共享点,但我收到未经授权的访问错误,但我可以毫无问题地记录网络共享点
- go - 多集群之间的 istio 流量管理
- python - 如何根据其他 2 列计算值更改?
- google-cloud-firestore - 用户只能在 Firestore 中访问他/她的文档
- swift - 将 xib 文件添加到 Swift 包
- postgresql - psycopg2.DataError:最后一个预期列 CONTEXT 之后的额外数据:COPY csvfails,第 1 行:
- kotlin - Kotlin - 针对 HashMap 的对象类型检查
显示警告 - html - 在 macOS 中使用 WebKit 显示 HTML - 空白视图
- sql-server - 如何使用递归 CTE 为数据集添加分辨率