Проект содержит класс с именем BaslerPylonCamera, который использует Basler. Pylon.dll как одна из ссылок.
Код: Выделить всё
BaslerPylonCamera
Проект WinForm работает нормально. Но если я попытаюсь запустить проект WinUI 3, произойдет ошибка.
Вот коды:
Код: Выделить всё
MainWindow.xaml.cs
Код: Выделить всё
using DeviceBalserGigeCCD;
using Emgu.CV;
using Microsoft.UI.Xaml;
using Microsoft.UI.Dispatching;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Media.Imaging;
using ShareAPI;
using System;
using System.Drawing;
using System.IO;
using System.Threading;
namespace CRHandlerCCDTest
{
///
/// An empty window that can be used on its own or navigated to within a Frame.
///
public sealed partial class MainWindow : Window
{
ACCD ccd = new BaslerPylonCamera(); // The error occured here
// ACCD is an abstract class for CCD
/* Some parameters */
public MainWindow()
{
this.InitializeComponent();
//...
}
/* Other methods */
}
}
- Исходная/первая ошибка
Ошибка произошла в начале.
System.TypeInitializationExceptionHResult=0x80131534
Message=Инициализатор типа для '' выдал исключение.
Source=DeviceBaslerGigeCCD
StackTrace:
at DeviceBalserGigeCCD.BaslerPylonCamera ..ctor() в \CRHandlerCCDTest_240723\DeviceBaslerGigeCCD\BaslerPylonCamera.cs:line 69
в CRHandlerCCDTest.MainWindow..ctor() в \CRHandlerCCDTest_240723\CRHandlerCCDTest\MainWindow.xaml.cs:line 33
at CRH АндлерCCDTest .App.OnLaunched(LaunchActivatedEventArgs args) в \CRHandlerCCDTest_240723\CRHandlerCCDTest\App.xaml.cs:line 44
в Microsoft.UI.Xaml.Application.Microsoft.UI.Xaml.IApplicationOverrides.OnLaunched(LaunchActivatedEventArgs args)
at ABI.Microsoft.UI.Xaml.IApplicationOverrides.Do_Abi_OnLaunched_0(IntPtr thisPtr, IntPtr args)
Это исключение изначально было создано в этом стеке вызовов:
[Внешний код]
Внутреннее исключение 1:
ModuleLoadException: модуль C++ не удалось загрузить во время инициализации процесса.
Внутреннее исключение 2:
SEHException: внешний компонент выдал исключение.
- Ошибки, которые я обнаружил/появились позже
Я видел комментарий к этому вопросу, поэтому нажимаю «Отладка -> Исключения» и устанавливаю флажки «ВКЛ. «Исключения C++», перестраиваю и запускаю. проект.
Затем я получил эту ошибку до появления исходной:
Исключение, созданное по адресу 0x00007FFCDCE4FABC в CRHandlerCCD_240729. exe:
Исключение Microsoft C++: [перегенерировать] в ячейке памяти
0x0000000000000000.
Исключения в WinDbg
Я проверил журнал событий Windows и вот исключения:
- Ошибка — сбой приложения при попытке проигнорировать ошибку и запустить проект в VS
- Система
Поставщик
[ Имя] Ошибка приложения
[Guid] {a0e9b465-b939-57d7-b27d-95d8e925ff57
EventID 1000
Версия 0
Уровень 2
Задача 100
Код операции 0
Ключевые слова 0x8000000000000000 - TimeCreated
[ SystemTime] 2024-07-31T05:26:08.7636580Z
EventRecordID 335071
Корреляция - Выполнение
[ ProcessID] 42500
[ ThreadID] 14784
Приложение канала
Компьютер - Безопасность
[ID пользователя] S-1-5-21-178552597-1107329665-3621315115-1857
- EventData
Имя приложения CRHandlerCCD_240729.exe
AppVersion 1.0.0.0AppTimeStamp 661f0000
Имя модуля Microsoft.ui.xaml.dll
ModuleVersion 3.1.5.0
ModuleTimeStamp 73620e9d
ExceptionCode c000027b
FaultingOffset 00000000004051c5
ProcessId 0x44a0
ProcessCreationTime 0x1DA330A232106AF < /p>
apppath \ crhandlerccd_240729 \ crhandlerccd_240729 \ bin \ x64 \ Debug \ net8.0-windows10.0.19041.0 \ win-x64 \ appx \ net8.0-windows10.0.19041.0 \ win-x64 \ \ /p>
ModulePath C:\Program Files\WindowsApps\Microsoft.WindowsAppRuntime.1.5_5001.178.1908.0_x64__8wekyb3d8bbwe\Microsoft.ui.xaml.dll
IntegratorReportId 656ff57b -608f-4d84-8450-d7012cc74221
PackageFullName 417b56fc-e3df-430a-939a-76afb6c4b4a3_1.0.0.0_x64__vr48ag13rqvjp
PackageRelativeAppId
- Ошибка. Попробуйте запустить .exe< /strong>
Этот блог (на китайском языке) подал мне идею попробовать напрямую запустить .exe в \CRHandlerCCD_240723\CRHandlerCCD_240723\bin\x64\Debug \net6.0-windows10.0.19041.0\win10-x64 для получения исключений.
Я получаю исключение, но это не из-за Basler.Pylon. dll:
Невозможно загрузить DLL «Microsoft.ui.xaml.dll» или одну из ее зависимостей:
Не удалось найти указанный модуль . (0x8007007E)
Код: Выделить всё
1026
0
2
0
0
0x80000000000000
339030
Application
Application: CRHandlerCCD_240723.exe CoreCLR Version: 6.0.3024.21525 .NET Version: 6.0.30 Description: The process was terminated due to an unhandled exception. Exception Info: System.DllNotFoundException: Unable to load DLL 'Microsoft.ui.xaml.dll' or one of its dependencies: The specified module could not be found. (0x8007007E) at CRHandlerCCD_240723.Program.XamlCheckProcessRequirements() at CRHandlerCCD_240723.Program.Main(String[] args) in \CRHandlerCCD_240723\CRHandlerCCD_240723\obj\x64\Debug\net6.0-windows10.0.19041.0\win10-x64\App.g.i.cs:line 29
Решение для TypeInitializationException: инициализатор типа для '' выдал исключение
Исключение инициализации типа WPF в C#
Исключение TypeInitializationException не было обработано пользовательским кодом
очистите и перестройте проект , но ничего не помогло.
Как исправить эту ошибку?
Изменить
Я попытался упростить свой код и проект, чтобы изолировать проблему.
Затем я столкнулся с двумя разными проблемами в зависимости от целевой платформы.
- x86 (32-разрядная версия): System.IO.FileNotFoundException[/b]
HResult=0x80070002
Сообщение=Не удалось загрузить файл или сборку 'Basler.Pylon, Version=1.2.0.0,
Culture=neutral, PublicKeyToken =e389355f398382ab'. Системе не удается найти указанный файл.
Source=240805_LightCodeDebugProject
StackTrace: at _240805_LightCodeDebugProject.BaslerPylonCamera..ctor() в \240805_LightCodeDebugProject\240805_LightCodeDebugProject\ BalserPylonCamera.cs: строка 63
в _240805_LightCodeDebugProject.MainWindow..ctor() в \240805_LightCodeDebugProject\240805_LightCodeDebugProject\MainWindow.xaml.cs:строка 31
at _240805_LightCodeDebugProject.App.OnLaunched(LaunchActivatedEventArgs args) в \240805_LightCodeDebugProject\240805_LightCodeDebugProject\App.xaml.cs:line 44
в Microsoft.UI.Xaml.Application.Microsoft.UI.Xaml .IApplicationOverrides.OnLaunched(LaunchActivatedEventArgs args)
в ABI.Microsoft.UI.Xaml.IApplicationOverrides.Do_Abi_OnLaunched_0(IntPtr
thisPtr, IntPtr args)
- x64 (64-разрядная версия): System.TypeInitializationException
Basler.Pylon.dll находится в выходном каталоге как для x86, так и для x64.
При настройке x86 библиотека DLL не найдена. При настройке x64 инициализация типа завершается неудачей.
Подробнее здесь: https://stackoverflow.com/questions/788 ... le-threw-a