我很难尝试将SDL库与MVS 2010中的新C ++ Win32控制台应用程序链接起来。
我下载了最新的SDL开发库,并执行了常规步骤:
我编辑了主文件以获得一些测试代码,看起来像这样:
#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开始再次下载了整个内容,得到了相同的结果。老实说,我很难过,而且我正在忽视这是一个粗心大意的错误。所以,如果有人对此事有一些新的意见,那真的会让我感到非常重要。
谢谢, 海梅
答案 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位于我上面列出的其中一个应该工作的位置。