2016-08-17 11 views
-1

Я разрабатываю небольшое фотографическое приложение, которое должно работать с Canon EDSDK api с камерами EOS. Все отлично работало со старыми dll (с 2014 года) и со старыми камерами Canon 1100D и 1200D. Недавно я купил succesor, модель 1300D. Конечно, старые dll's (2014) не узнали новую модель камеры с 2016 года, и я не мог подключиться к камере.edsdk C# функция pinvoke EdsCreateMemoryStream имеет несбалансированный стек

Так я заменил старый DLL файлы: EDSDK.dll и EdsImage.dll

новыми, взятыми из последнего Canon EOS Utility ver.3, которая работает с Canon 1300D.

Теперь моя камера распознается, на моей основной панели я вижу имя подключенной камеры Canon EOS 1300D.

Но после замены библиотеки DLL, когда я пытаюсь начать жить просмотра с камеры, я получаю это странное сообщение об ошибке:

Вызов функции PInvoke «! TestApp EDSDKLib.EDSDK :: EdsCreateMemoryStream» имеет несимметричный стек . Вероятно, это связано с тем, что управляемая подпись PInvoke не соответствует неуправляемой целевой сигнатуре. Убедитесь, что вызывающий конвенция и параметры подписи PInvoke соответствуют целевой неуправляемой подпись

Я буду очень признателен за любую помощь. Я уже потерял много времени на этом. У меня больше нет идей, и я не знаю, где искать ответы.

Спасибо Вам всем заблаговременно.

+1

Вы прочитали сообщение и сделали то, что он предлагает? Мы не можем помочь, потому что только у вас есть код. И только у вас есть библиотеки DLL.И без источника для DLL это будет сложно. Вы попросили поставщика помочь. –

ответ

1

Версия 3.4 изменила некоторые параметры от uint до ulong. Поскольку вы все еще используете старые определения функций, здесь возникает проблема. Проверьте разницу в файлах заголовков или файле C#, который поставляется вместе с EDSDK.

Я думаю, что эти функции являются те, что вам нужно изменить:

  • EdsDownload
  • EdsCreateMemoryStream
  • EdsCreateMemoryStreamFromPointer
  • EdsRead
  • EdsWrite
  • EdsSeek
  • EdsGetPosition
  • EdsGetLength
  • EdsCopyData

отметить также, что DirectoryItemInfo структура изменила свое Size поле из UINT в ULONG.

В версии 3.2 структура PictureStyleDesc изменена. Добавлены поля uint SharpFineness и uint SharpThreshold.

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

  • Нет связанных вопросов^_^