PDA

Просмотр полной версии : owen_io.dll + C# = проблема???



Diman
15.04.2010, 13:41
есть программа написанная на VS2008, задача считать данные от прибора МВА-8. Коммутация осуществляется сначала через RS-485. Зачем через преобразователь интерфейсов заводится на COM порт.
Конфигуратор МВА-8 прибор видит, данные из него читает, то есть все настроено.
В программе пытаюсь подцепить dll как внешную и выводится сообщение об ошибке в момент открытия COM порта:
Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B).
Более подробная информация из справки VS:
Убедитесь, что образ файла — это допустимая управляемая сборка или модуль.
Это исключение возникает при передаче неуправляемого кода в Load для загрузки.

Дополнительные сведения для пользователей Visual Basic см. в разделе Устранение неполадок взаимодействия.

Убедитесь, что введен правильный путь для сборки.
Если используется относительный путь, проверьте правильность текущего каталога.

Код где я подключаю dll:
[DllImport("owen_io.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern int OpenPort(int n, int speed, int parity, int bits, int stop, int converter);
[DllImport("owen_io.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern int ClosePort();
[DllImport("owen_io.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern int ReadIEEE32(int adr, int adr_type, char[] command, out float value,out int time, int index);

Что я не так делаю? Может кто то с таким сталкивался?
Насколько я понимаю проблема в запуске неуправляемого кода из .Net

Gosha
15.04.2010, 14:42
Вот все тут (
http://www.owen.ru/forum/showthread.php?t=7558) предлагают эти их библиотеки (по возможности) не использовать.

И написать все самому с исп исходных текстов выше по ссылке.
Оказалось это дело пары дней.
Только я делал для modbus.

http://www.owen.ru/forum/showthread.php?t=7621

Дмитрий Егоренков
16.04.2010, 10:05
owen_io.dll + C# = отлично работает

http://owen.ru/forum/showpost.php?p=27875&postcount=26

и не забудьте положить owen_io.dll рядом с вашей программой.

Дмитрий Егоренков
16.04.2010, 10:07
Гоша, вот там никто такого не советует. Первый совет разработчикам под Windows -- использовать библиотеку.

Diman
16.04.2010, 10:32
owen_io.dll + C# = отлично работает

http://owen.ru/forum/showpost.php?p=27875&postcount=26

и не забудьте положить owen_io.dll рядом с вашей программой.

Так и делаю, выводит сообщение о том чтобы я проверил действительно ли я подключанию управляемую сборку??? какая тут управляемая сборка если заранее использую библиотеку написанную на C++???

Дмитрий Егоренков
16.04.2010, 11:30
могу посоветовать удалить все версии owen_io.dll с диска и скачать свежую версию с сайта. и еще проверить, что ваше приложение не 64х-битное. .net считает, что с dll что-то не так.

ну и вообще-то в сообщении написано "Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)."

а в справке "Убедитесь, что образ файла — это допустимая управляемая сборка или модуль. Это исключение возникает при передаче неуправляемого кода в Load для загрузки."

Diman
19.04.2010, 14:03
могу посоветовать удалить все версии owen_io.dll с диска и скачать свежую версию с сайта. и еще проверить, что ваше приложение не 64х-битное. .net считает, что с dll что-то не так.

Спасиба все откомпилилось. Приложение запустилось. Сейчас буду дальше тестить.