0

SDL ライブラリを MVS 2010 の新しい C++ Win32 コンソール アプリケーションにリンクしようとして困っています。

最新の SDL 開発ライブラリをダウンロードし、通常の手順を実行しました。

  1. インクルード パス ( pic ) にインクルードを追加 [MVS が #include ファイルを検出するため、これは正常に機能します]
  2. SDL のライブラリ パス ( pic ) を追加 [この追加のパスを削除すると、「エラー LNK1104: ファイル '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:\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 から始めて全体を再度ダウンロードしましたが、同じ結果が得られました。私は正直困惑しており、私が見落としているのは不注意な単純な間違いであるという悪臭を放っています. したがって、誰かがこの問題について新鮮な意見を持っていれば、それは本当に私の一日になるでしょう.

ありがとう、ハイメ

4

3 に答える 3

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

于 2012-07-14T15:02:20.193 に答える
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

于 2012-07-14T10:52:46.627 に答える
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>

ここに小さなプログラムの例があります..dllが上記の場所の1つにある場合、これは機能するはずです。

于 2012-07-14T14:30:34.753 に答える