MVS中的SDL奇怪的链接器错误

SDL strange linker error in MVS

本文关键字:链接 错误 中的 SDL MVS      更新时间:2023-10-16

我在MVS 2010中尝试将SDL库与一个新的C++Win32控制台应用程序链接时遇到了麻烦。

我下载了最新的SDL开发库,并执行了通常的步骤:

  1. 将include添加到include路径(pic)[这很好,因为MVS找到了#include文件]
  2. 添加了SDL的库路径(pic)[这似乎很好,因为删除此附加路径会出现错误"error LNK1104:cannot open file‘SDL.lib’"]
  3. 将SDL.lib和SDLmain.lib添加到链接器的附加依赖项(pic)

我编辑了主文件以获得一些测试代码,使其看起来像这样:

#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include "SDL.h"
int _tmain(int argc, _TCHAR* argv[])
{
int a;
SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO);
std::cout << "Pong" << std::endl;
std::cin >> a;
return 0;
}

当我编译时,我得到以下链接器错误:

Error   1   error LNK2019: unresolved external symbol _SDL_Init referenced in function _wmain   D:AllProyectsPFCRT-PongRT-PongRT-PongRT-Pong.obj RT-Pong
Error   2   error LNK1120: 1 unresolved externals   D:AllProyectsPFCRT-PongRT-PongDebugRT-Pong.exe   1   1   RT-Pong

如果我有一个损坏的.lib,我从0开始再次下载了整个程序,并得到了相同的结果。老实说,我被难住了,这是一个我忽视的粗心的简单错误。因此,如果有人对这件事有一些新的意见,那将是我的一天。

谢谢,詹姆

我认为您的链接错误是由于"在SDL的库路径中定义了错误的路径"

Project->Properties->Configuration Properties->Linker->General->Additional Library Directories

从此更改路径:D:AllProyectsPFCRT-PongSDL-1.2.15libx64

进入:D:AllProyectsPFCRT-PongSDL-1.2.15libx86

尝试删除:

#include "stdafx.h"
#include <stdlib.h>

交换机:

int _tmain(int argc, _TCHAR* argv[]) 

int main(int argc, char* argv[])

将项目属性设置为"控制台应用程序"

阅读以下内容:http://lazyfoo.net/SDL_tutorials/lesson01/windows/msvsnet2010e/index.php

请确保链接到lib文件,并确保SDL.dll位于您的system32或sysWOW64(适用于x64 pc)或您从文件夹运行程序的目录中,如果您不确定它们是否已链接,则可以使用以下方法进行链接,并确保您的项目设置为控制台。

#pragma comment(lib, "SDLmain.lib")
#pragma comment(lib, "SDL.lib")

并始终记得正确关闭SDL并在完成后释放资源:

SDL_Quit();
return 0;

此外,当从常规包含文件夹链接时,使用尖括号更安全。。即:

#include <SDL/SDL.h>

这是一个小程序示例。。因此,如果.dll位于我上面列出的位置之一,这应该可以工作。