Monogame에서 Visual Studio로 빌드 된 프로젝트를 실행하려고합니다. 그것은 성공적으로 빌드,하지만 난 그것을 실행할 때 다음과 같은 오류 메시지가 얻을 :Monogame의 오류 메시지 : 처리되지 않은 예외 : System.DllNotFoundException : SDL2.dll
은 Game1.cs :
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
namespace MovingTeddyBears
{
/// <summary>
/// This is the main type for your game
/// </summary>
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
const int WINDOW_WIDTH = 800;
const int WINDOW_HEIGHT = 600;
// teddy bears
TeddyBear bear0;
TeddyBear bear1;
TeddyBear bear2;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
// set resolution to 800 by 600
graphics.PreferredBackBufferWidth = WINDOW_WIDTH;
graphics.PreferredBackBufferHeight = WINDOW_HEIGHT;
}
/// <summary>
/// Allows the game to perform any initialization it needs to before starting to run.
/// This is where it can query for any required services and load any non-graphic
/// related content. Calling base.Initialize will enumerate through any components
/// and initialize them as well.
/// </summary>
protected override void Initialize()
{
// TODO: Add your initialization logic here
base.Initialize();
}
/// <summary>
/// LoadContent will be called once per game and is the place to load
/// all of your content.
/// </summary>
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
// create teddy bears
bear0 = new TeddyBear(Content, "teddybear0", 100, 100, WINDOW_WIDTH, WINDOW_HEIGHT);
bear1 = new TeddyBear(Content, "teddybear1", 200, 100, WINDOW_WIDTH, WINDOW_HEIGHT);
bear2 = new TeddyBear(Content, "teddybear2", 300, 100, WINDOW_WIDTH, WINDOW_HEIGHT);
}
/// <summary>
/// UnloadContent will be called once per game and is the place to unload
/// all content.
/// </summary>
protected override void UnloadContent()
{
// TODO: Unload any non ContentManager content here
}
/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input, and playing audio.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
// update teddy bears
bear0.Update();
bear1.Update();
bear2.Update();
base.Update(gameTime);
}
/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
// draw teddy bears
spriteBatch.Begin();
bear0.Draw(spriteBatch);
bear1.Draw(spriteBatch);
bear2.Draw(spriteBatch);
spriteBatch.End();
base.Draw(gameTime);
}
}
}
Program.cs :
여기Unhandled Exception:
System.DllNotFoundException: SDL2.dll
at (wrapper managed-to-native) SDL2.SDL:SDL_SetMainReady()
at Microsoft.Xna.Framework.SDL2_GameWindow..ctor() [0x00000] in <filename unknown>:0
at Microsoft.Xna.Framework.SDL2_GamePlatform..ctor (Microsoft.Xna.Framework.Game game) [0x00000] in <filename unknown>:0
at Microsoft.Xna.Framework.GamePlatform.Create (Microsoft.Xna.Framework.Game game) [0x00000] in <filename unknown>:0
at Microsoft.Xna.Framework.Game..ctor() [0x00000] in <filename unknown>:0
at MovingTeddyBears.Game1..ctor() [0x00000] in /home/stefan/Downloads/LinuxMonoGameMovingTeddyBears/Game1.cs:30
at MovingTeddyBears.Program.Main() [0x00001] in /home/stefan/Downloads/LinuxMonoGameMovingTeddyBears/Program.cs:19
[ERROR] FATAL UNHANDLED EXCEPTION: System.DllNotFoundException: SDL2.dll
at (wrapper managed-to-native) SDL2.SDL:SDL_SetMainReady()
at Microsoft.Xna.Framework.SDL2_GameWindow..ctor() [0x00000] in <filename unknown>:0
at Microsoft.Xna.Framework.SDL2_GamePlatform..ctor (Microsoft.Xna.Framework.Game game) [0x00000] in <filename unknown>:0
at Microsoft.Xna.Framework.GamePlatform.Create (Microsoft.Xna.Framework.Game game)
[0x00000] in <filename unknown>:0
at Microsoft.Xna.Framework.Game..ctor() [0x00000] in <filename unknown>:0
at MovingTeddyBears.Game1..ctor() [0x00000] in /home/stefan/Downloads/LinuxMonoGameMovingTeddyBears/Game1.cs:30
at MovingTeddyBears.Program.Main() [0x00001] in /home/stefan/Downloads/LinuxMonoGameMovingTeddyBears/Program.cs:19
The application was terminated by a signal: SIGHUP
실제 코드를
#region Using Statements
using System;
using System.Collections.Generic;
using System.Linq;
#endregion
namespace MovingTeddyBears
{
static class Program
{
private static Game1 game;
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
game = new Game1();
game.Run();
}
}
}
이 페이지는 http://www.mono-project.com/docs/advanced/pinvoke/dllnotfoundexception/에 있지만 문제를 해결하지 못했습니다. 내가 실행할 때 사실, ldconfig -p |grep libgdiplus
내가
libgdiplus.so.0 (libc6,x86-64) => /usr/lib/libgdiplus.so.0
libgdiplus.so (libc6,x86-64) => /usr/lib/libgdiplus.so
를 얻을 수 있도록하는 .so 파일 (들) (I는하지만, 확실하지 생각하는) 문제가 될 것 같지 않습니다.
[MonoGame 응용 프로그램의 복제본은 SDL.dll이 누락되었음을 나타냅니다. 왜?] (http://stackoverflow.com/questions/25171606/monogame-application-says-sdl-dll-is-missing-even-though-its-there-why) –
David, 나는 그것이 생각하지 않는다. duplicate - 두 질문의 오류 메시지가 다릅니다. 자세한 내용은 아래 답변을 참조하십시오 (코멘트에 게시하기에는 너무 길어서 문제가 해결되지 않았습니다). – Stefan