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

时间:2012-07-14 08:57:38

标签: c++ visual-studio-2010 sdl linker-errors

我很难尝试将SDL库与MVS 2010中的新C ++ Win32控制台应用程序链接起来。

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

  1. 将包含添加到包含路径(pic)[这可行,因为MVS找到了#include文件]
  2. 添加了SDL的库路径(pic)[这似乎工作正常,因为删除此附加路径会出现错误“错误LNK1104:无法打开文件'SDL.lib'”]
  3. 将SDL.lib和SDLmain.lib添加到链接器其他依赖项(pic
  4. 我编辑了主文件以获得一些测试代码,看起来像这样:

    #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:\All\Proyects\PFC\RT-Pong\RT-Pong\RT-Pong\RT-Pong.obj RT-Pong
    Error   2   error LNK1120: 1 unresolved externals   D:\All\Proyects\PFC\RT-Pong\RT-Pong\Debug\RT-Pong.exe   1   1   RT-Pong
    

    如果我有一个损坏的.lib,我从0开始再次下载了整个内容,得到了相同的结果。老实说,我很难过,而且我正在忽视这是一个粗心大意的错误。所以,如果有人对此事有一些新的意见,那真的会让我感到非常重要。

    谢谢, 海梅

3 个答案:

答案 0 :(得分:3)

我认为由于“在SDL的库路径中定义了错误的路径”而导致链接错误

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

更改此路径:D:\All\Proyects\PFC\RT-Pong\SDL-1.2.15\lib\x64

进入:D:\All\Proyects\PFC\RT-Pong\SDL-1.2.15\lib\x86

答案 1 :(得分:0)

尝试删除:

#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

答案 2 :(得分:0)

确保链接到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>

这里有一个小的example program ..如果.dll位于我上面列出的其中一个应该工作的位置。