2016-08-08 2 views
0

следовать до: OpenGL4Net WM_PAINT does not exist?OpenGL4Net System.BadImageFormatException

Я до сих пор внимательно следит: 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; 
      } 
     } 
    } 
} 

Q: При условии, что я правильно ли внедряя учебник, что я могу сделать с ошибкой System.BadImageFormatException на линии program.Init();?

Дополнительно:

Дополнительная информация: Не удалось загрузить файл или сборку 'OpenGL4Net, Version = 4.3.37.24, Culture = нейтрально, PublicKeyToken = нуль' или один из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом .

Это может быть связанно с предупреждением:

Было несоответствие между архитектурой процессора проекта строится «MSIL» и архитектурой процессора ссылки «OpenGL4Net», " AMD64" . Это несоответствие может привести к сбоям во время выполнения. Просьба рассмотреть возможность изменения целевой архитектуры процессора вашего проекта через Configuration Manager, чтобы выровнять архитектуру между вашим проектом и ссылками, или принять зависимость от ссылок с архитектурой процессора, которая соответствует целевой архитектуре процессора вашего проект.

Однако в соответствии с:

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

Это не должно быть проблемой. При загрузке библиотеки OpenGL4Net существует только опция (32 или 64) бит.

Учитывая, что Microsoft Intermediate Language отличается от процессора, я пытался работать в режиме деблокирования вместо режима отладки, но это не имеет никакого значения.

ответ

1

Какую конфигурацию сборки вы используете при компиляции? И какую версию OpenGL4Net вы загрузили? 32 или 64-битная версия?

Попробуйте настроить конфигурацию сборки для соответствия целевому процессору ссылочной сборки (так, 32 или 64 бит, в зависимости от загрузки OpenGL4Net).

См. C# compiling for 32/64 bit, or for any cpu? для подробного объяснения.

+0

Это было в «Debug» (попробовав «Release») и «Any CPU». Я только что создал специально «64-битный процессор» в конфигурации сборки, и он сработал! Кажется, что VS не по умолчанию не соответствует типу процессора, установленному вашим процессором и ОС. | Discworld - Сэм Ваймс - «Было такое облегчение, что вы правы, хотя вы знали, что добрались туда, пытаясь всеми возможными способами ошибиться». – alan2here

Смежные вопросы