
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.126.168] |
![]() |
|
Сообщ.
#1
,
|
|
|
При запуске приложения в режиме без отладки выскакивает вот такой мэсэдж:
Подробная информация об использовании оперативной (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) но если запускать в режиме отладки то ошибок нету ....как решить данную проблему? ![]() ![]() |
Сообщ.
#2
,
|
|
|
Код метода Form1.Form1_Load из файла "D:\программный имитатор музыкльных устройств\Имитатор музыкальных устройств\Имитатор музыкальных устройств\Form1.cs" в студию
![]() Добавлено И отметьте там ту строку, которая №110 |
Сообщ.
#3
,
|
|
|
Ошибка "Была сделана попытка загрузить программу, имеющую неверный формат" у меня возникала когда я пытался сделать DllImport x32 dll-ки в x64 винде или наоборот.
Может и здесь те же грабельки. |
Сообщ.
#4
,
|
|
|
Да, например, в дебаге ваш проект может компилиьться как x64 а в релизи как x86 или наоборот
|
Сообщ.
#5
,
|
|
|
![]() ![]() 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 ![]() ![]() 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 работает, а если запускать без отладки то вылетает ошибка |
Сообщ.
#6
,
|
|
|
Код вроде нормальный.
Цитата Whitebrain @ winmm.dll лежит в папке bin/debug/ (ну и во всех, которые там были - не помогло) Странно как-то. winmm.dll - стандартная виндозная dll, ее законное место в C:\WINDOWS\system32. И она там всегда есть. Зачем вы ее в свой bin/debug засунули? А в bin/Release засунуть не пытались? Удалите ее оттуда, ей там не место. Может она у вас вообще не от вашей ОС. И что значит "запускать без отладки"? Без студии, проводником exe-шник из каталога debug? Или проводником exe из Release? |
Сообщ.
#7
,
|
|
|
ну вообще в студии есть такое меню Отладка : и там есть "начать отладку" и "запуск без отладки" итд либо f5 и ctrl+f5
Добавлено hd44780 спасибо помогло.. |