|
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 20
|
||||||||||||||||
Подключение неуправляемого кода15.10.2018, 19:56. Показов 5537. Ответов 25
Метки нет (Все метки)
Есть код на С++
0
|
||||||||||||||||
| 15.10.2018, 19:56 | |
|
Ответы с готовыми решениями:
25
Вызов неуправляемого кода из длл |
|
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
|
|
| 16.10.2018, 09:48 | |
|
char* в C# как string должен быть, а не IntPtr как я помню, попробуйте в такой вариации, может потому и нету данных. Да и это единственное чего нету? остальные данные приходят?
Добавлено через 3 минуты Есть вот такая статья у майков: https://docs.microsoft.com/en-... orm-invoke описывает какой тип какому соответствует, думаю будет полезна.
0
|
|
|
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 20
|
||||
| 16.10.2018, 10:42 [ТС] | ||||
|
Сейчас проверю. Добавлено через 3 минуты Добавлено через 17 секунд
0
|
||||
|
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
|
|
| 16.10.2018, 11:10 | |
|
код как сделали, и вылетает с какой ошибкой то + убери из своих структур
unsafe
0
|
|
|
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 20
|
|||||||||||||||||
| 16.10.2018, 12:10 [ТС] | |||||||||||||||||
Проблема в общем следующая: Есть рабочая программа. К ней нужно было подцепить Сберовские терминалы. Была библиотека, в которой уже была реализована работа с аналогичными терминалами от других поставщиков. Подцепил все быстро под COM. Но после первой успешной транзакции в программе, программа вылетала System.ArithmeticException при клике на любом контроле. Попробовал без COM напрямую через pilot_nt.dll. (пока только чек не удалось получить) ТО же самое. После первой успешной, любой клик на контроле и программа вылетает. Печаль в том, что тестовое приложение с этой же библиотекой работает без вылетов в обоих реализациях. Куда смотреть? МОЗГ взрывается. неделя бессоных ночей!
0
|
|||||||||||||||||
|
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
|
||||||
| 16.10.2018, 12:16 | ||||||
|
VicNic, у Вас обычный char в C# он такой же char, только массив иначе объявляется:
p.s. я же дал Вам ссылку по мапингу типов, там можно это всё легко глянуть было Добавлено через 1 минуту по поводу Вашей проблемы тут уже надо смотреть целиком Ваш код, и код "любого контрола" что они делают, и смотреть что именно вызывает такую ошибку.
0
|
||||||
|
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 20
|
||
| 16.10.2018, 12:33 [ТС] | ||
|
0
|
||
|
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
|
||
| 16.10.2018, 12:41 | ||
|
0
|
||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
|
||||||||||||
| 16.10.2018, 12:47 | ||||||||||||
|
А почему у вас
0
|
||||||||||||
|
1 / 2 / 0
Регистрация: 02.06.2018
Сообщений: 33
|
|
| 17.10.2018, 11:29 | |
|
Зачем вообще переводить C++ на C# ? Существует канал доступа к программе на C++ в неуправляемой среде из программы на C#. Пишите основу программы на C# для управляемой среды и выполняйте код на C++ в неуправляемой среде. Все делается через этот канал доступа. Также приведен пример как все это делать, конкретно для подсчета суммы элементов матрицы.
0
|
|
|
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 20
|
||||||||||||
| 17.10.2018, 12:31 [ТС] | ||||||||||||
|
Кинули на эту задачу. Приходится "на лету" язык изучать. Поэтому прошу помощи чуть более поконкретнее. На С++ это пример из документации для интеграторов. Добавлено через 34 минуты Сейчас все откатил на работу с COM. Все чеки получаю. Тестовая форма работает идеально. После вызова из основного приложения, первая транзакция проходит успешно. Программа не вылетает. Но стоит на этой форме кликнуть на любой control - вылетает с System.ArithmeticException Так как переключение на работу с другим терминалом не вызвает подобных вылетов, подозреваю что проблема в самом подключении и вызове через COM. Подключал просто через добавление Ссылки. Это подключение
0
|
||||||||||||
|
1 / 2 / 0
Регистрация: 02.06.2018
Сообщений: 33
|
|
| 17.10.2018, 12:37 | |
|
Это здесь
https://sites.google.com/site/... home/files Скачайте Instruction.docs, далее - Глава 4. Методы взаимодействия с программными средствами на основе языка С. На стр. 113 тот же пример для языка BVM. Добавлено через 6 минут Посмотрите пример, может, подойдет. Не уверен, что ваш случай, и тем не менее.
0
|
|
|
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
|
|
| 17.10.2018, 12:43 | |
|
VicNic, покажите что происходит в коде любого control который вызывает ArithmeticException, и посмотрите стек вызова у ошибки, откуда "ноги" растут то?
0
|
|
|
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 20
|
|
| 17.10.2018, 13:19 [ТС] | |
|
0
|
|
|
1 / 2 / 0
Регистрация: 02.06.2018
Сообщений: 33
|
|
| 17.10.2018, 13:20 | |
|
Интересная задачка. Я бы с чего начал: уж если достучался указателем до массива char в неуправляемой среде, попробовал бы поэлементно вытаскивать отдельные символы, пока не наткнусь на нулевой. А уж из массива символов собрать строку не проблема.
0
|
|
|
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
|
|
| 17.10.2018, 13:30 | |
|
VicNic, видно конечно не очень, но по стеку виднеется вызов метода если не путаю Execute (плохо видно на таких скринах), судя по тому откуда начинается стэк у Вас WPF приложение, значит скорей всего этот метод стоит на биндинге, нужно смотреть что в них происходит, возможно передаются данные или идёт обращение к несуществующим параметрам у терминала. На текущий момент Вам нужно отлаживать Ваше ПО начиная с метода описанного выше, я не имея понятия что там и как вообще всё устроено могу только советовать. Вам нужно найти точку "входа" для этой функции, ставить точку остановки и поэтапно смотреть какие параметры и куда уходят.
Добавлено через 52 секунды B_S_V, у меня такое чувство что вы робот и пишите просто набор слов чуть чуть подходящие под тему...
0
|
|
|
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 20
|
|
| 17.10.2018, 13:42 [ТС] | |
|
Не робооооооообот я.
![]() Просто не знаю как к этому подступиться. Не хватает знаний и опыта. Добавлено через 1 минуту И так как, ответы приходят с опозданием, уже кучу вещей сам пробую. Поэтому такие "скачки" в потоке мысли. Добавлено через 6 минут Это код уже после вызова терминала СБера. Работа с терминалом закончилась. То есть остается окно с выбором мест. Отмечаю новые места (можно не отмечать), нажатие на любую кнопку, приводит к этому событию. Добавлено через 52 секунды ЕСли терминал СБер не вызывать, то все работает как часы. Так же все раюотает, еслы переключить вызов вместо терминала СБер на любой другой из поддерживаемых.
0
|
|
|
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
|
|
| 17.10.2018, 13:57 | |
|
VicNic, про робота было не Вам
я понимаю что это уже после вызова, я и говорю Вам ставьте точку остановки на этом методе и смотрите что там вызывается, у меня нету Вашего проекта и нет возможности воспроизвести ошибку, чтобы в точности сказать что и как Добавлено через 1 минуту метод GO во ViewModel строка 798. Ставьте точку остановки и смотрите что именно вызывает там у Вас такой эксепшенДобавлено через 5 минут VicNic, идея конечно так себе но попробуйте работу с терминалом сделать отдельным потоком (для тестов). Есть вероятность что текущая работа просто нарушает целостность и ошибка уже как следствие идёт Добавлено через 6 минут P.S. а нет ли в той строке с ошибкой использования double.NaN?
0
|
|
|
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 20
|
|
| 17.10.2018, 14:32 [ТС] | |
|
2018-10-17 14:26:27,479 [9] ERROR TT.TicketKassa.App [(null)] - System.Windows.Markup.XamlParseException : "Задание свойства "System.Windows.FrameworkElement.Hei ght" вызвало исключение.": номер строки "13" и позиция в строке "9". ---> System.ArithmeticException: Переполнение или потеря точности в арифметической операции.
в System.Double.Equals(Object obj) в System.Object.Equals(Object objA, Object objB) в System.Windows.DependencyObject.UpdateEf fectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType) в System.Windows.DependencyObject.SetValue Common(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal) в System.Windows.Baml2006.WpfKnownMemberIn voker.SetValue(Object instance, Object value) в MS.Internal.Xaml.Runtime.ClrObjectRuntim e.SetValue(XamlMember member, Object obj, Object value) в MS.Internal.Xaml.Runtime.ClrObjectRuntim e.SetValue(Object inst, XamlMember property, Object value) --- Конец трассировки внутреннего стека исключений --- в System.Windows.Markup.WpfXamlLoader.Load (XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri) в System.Windows.Markup.WpfXamlLoader.Load Baml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri) в System.Windows.Markup.XamlReader.LoadBam l(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream) в System.Windows.Application.LoadComponent (Object component, Uri resourceLocator) в TT.TicketKassa.Controls.InputNumber.Init ializeComponent() в D:\ProjectVS15\cinema-prof\trunk\src\net\TT.TicketKassaDLL\Con trols\InputNumber.xaml:строка 1 в TT.TicketKassa.Controls.InputNumber.Show PayWindow(String message, OrderSaleType& orderSaleType) в D:\ProjectVS15\cinema-prof\trunk\src\net\TT.TicketKassaDLL\Con trols\InputNumber.xaml.cs:строка 25 в TT.TicketKassa.Services.ProcessOrder.Pro cessOrderService(Boolean fast, Int32 showId, Int32 clientID, OrderData orderData, String seatsString, Int32 Count, Byte typeseatForUpdate) в D:\ProjectVS15\cinema-prof\trunk\src\net\TT.TicketKassaDLL\Ser vices\ProcessOrder.cs:строка 46 в TT.TicketKassa.ViewModels.RepertoryViewM odel.Sale0(Boolean fast) в D:\ProjectVS15\cinema-prof\trunk\src\net\TT.TicketKassaDLL\Vie wModels\RepertoryViewModel.cs:строка 887 в TT.TicketKassa.ViewModels.RepertoryViewM odel.Go(Boolean fast) в D:\ProjectVS15\cinema-prof\trunk\src\net\TT.TicketKassaDLL\Vie wModels\RepertoryViewModel.cs:строка 797 в TT.TicketKassa.ViewModels.RepertoryViewM odel.Sale(Object obj) в D:\ProjectVS15\cinema-prof\trunk\src\net\TT.TicketKassaDLL\Vie wModels\RepertoryViewModel.cs:строка 787 в AttachedCommandBehavior.ActionExecutionS trategy.Execute(Object parameter) в D:\ProjectVS15\cinema-prof\trunk\src\net\TT.TicketKassaDLL\Vie ws\Commands\ExecutionStrategy.cs:строка 71 в (CommandBehaviorBinding , Object , RoutedEventArgs ) в System.Windows.RoutedEventHandlerInfo.In vokeHandler(Object target, RoutedEventArgs routedEventArgs) в System.Windows.EventRoute.InvokeHandlers Impl(Object source, RoutedEventArgs args, Boolean reRaised) в System.Windows.UIElement.RaiseEventImpl( DependencyObject sender, RoutedEventArgs args) в System.Windows.UIElement.RaiseEvent(Rout edEventArgs e) в System.Windows.Controls.Primitives.Butto nBase.OnClick() в System.Windows.Controls.Button.OnClick() в System.Windows.Controls.Primitives.Butto nBase.OnMouseLeftButtonUp(MouseButtonEve ntArgs e) в System.Windows.UIElement.OnMouseLeftButt onUpThunk(Object sender, MouseButtonEventArgs e) в System.Windows.Input.MouseButtonEventArg s.InvokeEventHandler(Delegate genericHandler, Object genericTarget) в System.Windows.RoutedEventArgs.InvokeHan dler(Delegate handler, Object target) в System.Windows.RoutedEventHandlerInfo.In vokeHandler(Object target, RoutedEventArgs routedEventArgs) в System.Windows.EventRoute.InvokeHandlers Impl(Object source, RoutedEventArgs args, Boolean reRaised) в System.Windows.UIElement.ReRaiseEventAs( DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent) в System.Windows.UIElement.OnMouseUpThunk( Object sender, MouseButtonEventArgs e) в System.Windows.Input.MouseButtonEventArg s.InvokeEventHandler(Delegate genericHandler, Object genericTarget) в System.Windows.RoutedEventArgs.InvokeHan dler(Delegate handler, Object target) в System.Windows.RoutedEventHandlerInfo.In vokeHandler(Object target, RoutedEventArgs routedEventArgs) в System.Windows.EventRoute.InvokeHandlers Impl(Object source, RoutedEventArgs args, Boolean reRaised) в System.Windows.UIElement.RaiseEventImpl( DependencyObject sender, RoutedEventArgs args) в System.Windows.UIElement.RaiseTrustedEve nt(RoutedEventArgs args) в System.Windows.UIElement.RaiseEvent(Rout edEventArgs args, Boolean trusted) в System.Windows.Input.InputManager.Proces sStagingArea() в System.Windows.Input.InputManager.Proces sInput(InputEventArgs input) в System.Windows.Input.InputProviderSite.R eportInput(InputReport inputReport) в System.Windows.Interop.HwndMouseInputPro vider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel) в System.Windows.Interop.HwndMouseInputPro vider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled) в System.Windows.Interop.HwndSource.InputF ilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) в MS.Win32.HwndSubclass.DispatcherCallback Operation(Object o) в System.Windows.Threading.ExceptionWrappe r.InternalRealCall(Delegate callback, Object args, Int32 numArgs) в System.Windows.Threading.ExceptionWrappe r.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler) Добавлено через 2 минуты Это при клиеке на кнопке "Продажа". При клике на другом контроле Exception тот же ну соответсвенно ссылки на код другие
0
|
|
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
|
|
| 17.10.2018, 14:32 | |
|
Что у вас в D:\ProjectVS15\cinema-prof\trunk\src\net\TT.TicketKassaDLL\Con trols\InputNumber.xaml, номер строки "13" и позиция в строке "9"? Где-то там или в коже выставляется некорректное значение Height...
0
|
|
| 17.10.2018, 14:32 | |
|
Помогаю со студенческими работами здесь
20
преобразование ref byte в byte[] или в IntPtr без использования неуправляемого кода Подключение Python кода в С# проект Возможно ли вызвать функции неуправляемого консольного приложения в управляемом коде? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|