【问题标题】:Setting up SFML.net 2.1?设置 SFML.net 2.1?
【发布时间】:2014-07-14 08:38:21
【问题描述】:

您如何“正确”为 VS 2013 设置 SFML?虽然有几个地方给了我一些关于如何做到这一点的信息,但除了一件事之外似乎没有什么能奏效:SFML MS2012 Extension。但是,我想知道如何从头开始为 VS 2013 执行此操作,而不需要扩展。

这是我当前使用的不带扩展名的流程:

1) 在 VS 2013 中打开新项目。

2) 添加对 SFML 库(dll)的引用:sfml-audio-2、afml-graphics-2 和 sfml-windows-2。

3) 通过添加现有文件添加扩展库:csfml-audio-2、csfml-graphics-2、csfml-windows-2、libsndfile-1 和 openal32。

4) 创建应用程序。

在扩展和自己做所有事情之间,明显的区别是程序集信息中的 GUID,但是如果我尝试前面的步骤并将扩展项目中的 GUID 插入到新项目中,我的尝试仍然失败,即使这些项目最终看起来完全一样。最重要的是,GUID 来自哪里以及如何获取它?

第二个问题:XNA 是否像 SFML 那样拥有所有的音频/图形/窗口处理功能?如果是这样,切换到 XNA 会比使用 SFML.Net 更好吗?

【问题讨论】:

  • 你还有这个问题吗?
  • 是的,我是。完全不知道如何让它发挥作用。

标签: c# .net sfml


【解决方案1】:
  1. 在 Visual Studio 2012/2013/2015 中创建一个新的 C# 项目。它可以是控制台应用程序或 Windows 窗体应用程序。唯一的区别是,Windwos 表单应用程序会生成一个您可以安全删除的表单,并且控制台应用程序会在后台显示一个控制台。
  2. 在解决方案资源管理器中右键单击您的项目,然后单击添加参考...
  3. 当 Reference Manager 窗口出现时,浏览到您提取 SFML.net 存档的文件夹,然后转到 lib 文件夹。选择 lib 文件夹中的所有 .dll 文件,然后在 Reference Manager 中单击“确定”将它们添加到您的项目中。
  4. 当 .dll 文件出现在项目的 References 部分后,再次右键单击项目并单击 Add > Existing Item... 导航到 extlibs 文件夹并在那里添加所有 .dll 文件(您可能必须在“打开”对话框中选择 .dll 文件作为文件过滤器)
  5. 当这些 .dll 文件出现在您的解决方案资源管理器中时,右键单击它们并选择属性 (或按 Alt-Enter)。在 Copy to Output 目录属性中,将其设置为 Copy if newer
  6. SFML.net 现在已为您的项目设置好了。要对其进行测试,您可以运行以下示例代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using SFML;
    using SFML.Graphics;
    using SFML.Window;
    
    namespace SFML_Test {
            static class Program {
                static void OnClose(object sender, EventArgs e) {
                    // Close the window when OnClose event is received
                    RenderWindow window = (RenderWindow)sender;
                    window.Close();
                }
    
                static void Main() {
                    // Create the main window
                    RenderWindow app = new RenderWindow(new VideoMode(800, 600), "SFML Works!");
                    app.Closed += new EventHandler(OnClose);
    
                    Color windowColor = new Color(0, 192, 255);
    
                    // Start the game loop
                    while (app.IsOpen()) {
                        // Process events
                        app.DispatchEvents();
    
                        // Clear screen
                        app.Clear(windowColor);
    
                        // Update the window
                        app.Display();
                    } //End game loop
                } //End Main()
            } //End Program
        }
    

它应该输出这个:

我通过this tutorial 在 Visual Studio 2013 和 2015 中设置了我的 SFML.Net 项目。我使用其中的一些文本来回答这个问题。

【讨论】:

  • 我试过你的方法。(从 gi​​thub 编译最新的 Sfml.Net)没有任何编译器错误,但在运行时,我得到 System.BadImageException Additional information: Could not load file or assembly 'sfmlnet-graphics-2, Version=2.4.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.
  • SFML 是否适用于 17?我尝试这样做,但 Windows 错误诊断窗口出现消息“.exe 已停止工作”。
猜你喜欢
  • 1970-01-01
  • 2011-04-14
  • 2014-07-27
  • 2012-03-24
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多