gpt4 book ai didi

c++ - Unresolved external symbol 错误(VS2013 Express)

转载 作者:行者123 更新时间:2023-11-28 02:57:38 24 4
gpt4 key购买 nike

我决定开始学习 C++,并且一直在尝试使用 SDL、类和头文件。我这里有一个头文件:

class loaders
{
public:
loaders();
SDL_Surface * load_image(const char imageName[], SDL_PixelFormat *format);
};

CPP 文件在这里:

#include <SDL.h>
#include <SDL_image.h>
#include <iostream>
//COMMENT
class loaders
{
public:
loaders()
{
if (IMG_Init(IMG_INIT_PNG) != IMG_INIT_PNG)
{
std::cout << IMG_GetError();
}
}
SDL_Surface * load_image(const char imageName[], SDL_PixelFormat *format)
{
SDL_Surface * returnSurface = nullptr;
returnSurface = IMG_Load(imageName);
if (returnSurface != NULL)
{
return SDL_ConvertSurface(returnSurface, format, NULL);
}
else
{
std::cout << "Image load failed." << IMG_GetError() << std::endl;
return NULL;
}

}
};

我知道错误意味着链接器无法找到某些东西,但我终究无法弄清楚它是什么。它可能很小,所以我认为另一双眼睛会有所帮助。

最佳答案

你的实现文件应该使用它自己的头文件来声明类。您只需要在 loaders.cpp 中定义成员函数,如下所示:

#include <SDL.h>
#include <SDL_image.h>
#include <iostream>
#include "loaders.h"

loaders::loaders()
{
if (IMG_Init(IMG_INIT_PNG) != IMG_INIT_PNG)
{
std::cout << IMG_GetError();
}
}

SDL_Surface * loaders::load_image(const char imageName[], SDL_PixelFormat *format)
{
SDL_Surface * returnSurface = nullptr;
returnSurface = IMG_Load(imageName);
if (returnSurface != NULL)
{
return SDL_ConvertSurface(returnSurface, format, NULL);
}
else
{
std::cout << "Image load failed." << IMG_GetError() << std::endl;
return NULL;
}
}

在您的项目中包含此实现文件,并使用相同的标志(默认情况)编译项目中的所有源代码。然后,编译器将对构造函数的所有引用使用相同的调用约定和名称修饰,链接器将在将所有目标文件放入可执行文件时找到该符号。

关于c++ - Unresolved external symbol 错误(VS2013 Express),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21617766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com