OpenGL4Net System.BadImageFormatException

时间:2016-08-08 18:13:20

标签: c# .net opengl dll compiler-errors

跟进: OpenGL4Net WM_PAINT does not exist?

我仍然密切关注:https://sourceforge.net/p/ogl4net/wiki/Tutorials

目前的计划:

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenGL4NET;

namespace pads2
{
    class Program : Form
    {
        private const int WM_PAINT = 15;
        RenderingContext rc;

        static void Main(string[] args)
        {
            Program program = new Program();
            program.Init();
            Application.Run(program);
        }

        // required for open GL
        void Init()
        {
            rc = RenderingContext.CreateContext(this);
            SetStyle(ControlStyles.AllPaintingInWmPaint, true);
        }

        void Render()
        {
            gl.Clear(GL.COLOR_BUFFER_BIT);

            // here is the right place to draw all your scene

            rc.SwapBuffers();
        }

        // change window size
        protected override void OnSizeChanged(EventArgs e)
        {
            gl.Viewport(0, 0, ClientSize.Width, ClientSize.Height);
            // projection matrix may also need adjusting
        }

        // required for open GL
        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case WM_PAINT: Render(); break;
                default: base.WndProc(ref m); break;
            }
        }
    }
}

问:如果我正确地实施了教程,我该如何处理System.BadImageFormatException行上的错误program.Init();

此外:

  

其他信息:无法加载文件或程序集'OpenGL4Net,   Version = 4.3.37.24,Culture = neutral,PublicKeyToken = null'或其中一个   依赖。尝试加载程序不正确   格式。

这可能是由于警告:

  

项目的处理器架构之间存在不匹配   正在构建“MSIL”和参考的处理器架构   “OpenGL4Net”,“AMD64”。这种不匹配可能会导致运行时故障。   请考虑更改您的目标处理器架构   通过Configuration Manager进行投影,以便对齐处理器   您的项目和参考之间的架构,或采取   依赖于具有匹配的处理器体系结构的引用   项目的目标处理器架构。

然而根据:

How do I fix the Visual Studio compile error, "mismatch between processor architecture"?

这应该不是问题。下载OpenGL4Net DLL时,只有(32或64)位选项。

鉴于Microsoft中间语言与处理器不同,我尝试在发布模式而不是调试模式下运行,但它没有任何区别。

1 个答案:

答案 0 :(得分:1)

编译时使用什么构建配置?你下载了什么版本的OpenGL4Net? 32位还是64位版本?

尝试设置构建配置以匹配引用程序集的预期目标cpu(因此,32位或64位,具体取决于OpenGL4Net的下载)。

有关详细说明,请参阅C# compiling for 32/64 bit, or for any cpu?