На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Исключение из HRESULT: 0x8007000B , возникновение ошибки
    При запуске приложения в режиме без отладки выскакивает вот такой мэсэдж:
    Подробная информация об использовании оперативной
    (JIT) отладки вместо данного диалогового
    окна содержится в конце этого сообщения.

    ************** Текст исключения **************
    System.BadImageFormatException: Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)
    в Имитатор_музыкальных_устройств.WaveNative.waveInGetNumDevs()
    в Имитатор_музыкальных_устройств.Form1.Form1_Load(Object sender, EventArgs e) в D:\программный имитатор музыкльных устройств\Имитатор музыкальных устройств\Имитатор музыкальных устройств\Form1.cs:строка 110
    в System.Windows.Forms.Form.OnLoad(EventArgs e)
    в System.Windows.Forms.Form.OnCreateControl()
    в System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
    в System.Windows.Forms.Control.CreateControl()
    в System.Windows.Forms.Control.WmShowWindow(Message& m)
    в System.Windows.Forms.Control.WndProc(Message& m)
    в System.Windows.Forms.ScrollableControl.WndProc(Message& m)
    в System.Windows.Forms.ContainerControl.WndProc(Message& m)
    в System.Windows.Forms.Form.WmShowWindow(Message& m)
    в System.Windows.Forms.Form.WndProc(Message& m)
    в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    но если запускать в режиме отладки то ошибок нету ....как решить данную проблему? :wall: :no-sad:
      Код метода Form1.Form1_Load из файла "D:\программный имитатор музыкльных устройств\Имитатор музыкальных устройств\Имитатор музыкальных устройств\Form1.cs" в студию :)

      Добавлено
      И отметьте там ту строку, которая №110
        Ошибка "Была сделана попытка загрузить программу, имеющую неверный формат" у меня возникала когда я пытался сделать DllImport x32 dll-ки в x64 винде или наоборот.

        Может и здесь те же грабельки.
          Да, например, в дебаге ваш проект может компилиьться как x64 а в релизи как x86 или наоборот
            ExpandedWrap disabled
               private void Form1_Load(object sender, EventArgs e)
                      {
                              [B]if (WaveNative.waveInGetNumDevs() == 0) //вылетает тут, при попытке вызова метода[/B]
                              {
                                  textBoxConsole.AppendText(DateTime.Now.ToString() + " : В системе не обнаружено устройств для оцифровки звуковых сигналов\r\n");
                              }
                              else
                              {
                                  textBoxConsole.AppendText(DateTime.Now.ToString() + " : Устройство для оцифровки звуковых сигналов обнаружено \r\n");
               
                                  _MyWaveFormat = new WaveFormat(48000, 16, 1);
                                  int sizeBuffer = 1000;
                                  _MyAudioFrame = new AudioFrame(_MyWaveFormat, sizeBuffer);
               
                                  _MyRecorder = new WaveInRecorder(-1, _MyWaveFormat, sizeBuffer, 3, new BufferDoneEventHandler(DataArrived));
                                  _MyRecorderBuffer = new byte[sizeBuffer];
                                  _MyWaveStorage = new WaveStorage(_MyWaveFormat, sizeBuffer);
                              }
                              
                      }


            Класс WaveNative

            ExpandedWrap disabled
              using System.Runtime.InteropServices;
              //....
              public class WaveNative
                  {
                      // consts
                      public const int MMSYSERR_NOERROR = 0; // no error
               
                      public const int MM_WOM_OPEN = 0x3BB;
                      public const int MM_WOM_CLOSE = 0x3BC;
                      public const int MM_WOM_DONE = 0x3BD;
               
                      public const int MM_WIM_OPEN = 0x3BE;
                      public const int MM_WIM_CLOSE = 0x3BF;
                      public const int MM_WIM_DATA = 0x3C0;
               
                      public const int CALLBACK_FUNCTION = 0x00030000;    // dwCallback is a FARPROC
               
                      public const int TIME_MS = 0x0001;  // time in milliseconds
                      public const int TIME_SAMPLES = 0x0002;  // number of wave samples
                      public const int TIME_BYTES = 0x0004;  // current byte offset
               
                      // callbacks
                      public delegate void WaveDelegate(IntPtr hdrvr, int uMsg, int dwUser, ref WaveHdr wavhdr, int dwParam2);
               
                      // structs
               
                      [StructLayout(LayoutKind.Sequential)]
                      public struct WaveHdr
                      {
                          public IntPtr lpData; // pointer to locked data buffer
                          public int dwBufferLength; // length of data buffer
                          public int dwBytesRecorded; // used for input only
                          public IntPtr dwUser; // for client's use
                          public int dwFlags; // assorted flags (see defines)
                          public int dwLoops; // loop control counter
                          public IntPtr lpNext; // PWaveHdr, reserved for driver
                          public int reserved; // reserved for driver
                      }
               
                      private const string mmdll = "winmm.dll";
               
                      // WaveIn calls
                      [DllImport(mmdll)]
                      public static extern int waveInGetNumDevs();
                      [DllImport(mmdll)]
                      public static extern int waveInAddBuffer(IntPtr hwi, ref WaveHdr pwh, int cbwh);
                      [DllImport(mmdll)]
                      public static extern int waveInClose(IntPtr hwi);
                      [DllImport(mmdll)]
                      public static extern int waveInOpen(out IntPtr phwi, int uDeviceID, WaveFormat lpFormat, WaveDelegate dwCallback, IntPtr dwInstance, int dwFlags);
                      [DllImport(mmdll)]
                      public static extern int waveInPrepareHeader(IntPtr hWaveIn, ref WaveHdr lpWaveInHdr, int uSize);
                      [DllImport(mmdll)]
                      public static extern int waveInUnprepareHeader(IntPtr hWaveIn, ref WaveHdr lpWaveInHdr, int uSize);
                      [DllImport(mmdll)]
                      public static extern int waveInReset(IntPtr hwi);
                      [DllImport(mmdll)]
                      public static extern int waveInStart(IntPtr hwi);
                      [DllImport(mmdll)]
                      public static extern int waveInStop(IntPtr hwi);
                  }


            Референсы прописаны. winmm.dll лежит в папке bin/debug/ (ну и во всех, которые там были - не помогло)
            Херня в том, что debug работает, а если запускать без отладки то вылетает ошибка
              Код вроде нормальный.

              Цитата Whitebrain @
              winmm.dll лежит в папке bin/debug/ (ну и во всех, которые там были - не помогло)

              Странно как-то.
              winmm.dll - стандартная виндозная dll, ее законное место в C:\WINDOWS\system32. И она там всегда есть.

              Зачем вы ее в свой bin/debug засунули? А в bin/Release засунуть не пытались?
              Удалите ее оттуда, ей там не место. Может она у вас вообще не от вашей ОС.

              И что значит "запускать без отладки"?
              Без студии, проводником exe-шник из каталога debug?
              Или проводником exe из Release?
              Сообщение отредактировано: hd44780 -
                ну вообще в студии есть такое меню Отладка : и там есть "начать отладку" и "запуск без отладки" итд либо f5 и ctrl+f5

                Добавлено
                hd44780 спасибо помогло..
                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0377 ]   [ 15 queries used ]   [ Generated: 13.05.25, 23:55 GMT ]