Сообщение Re: Ошибка ucrtbase.dll Недопустимый параметр был передан фу от 30.08.2016 8:52
Изменено 19.09.2016 8:21 Serginio1
Здравствуйте, Serginio1, Вы писали:
Суть такая из натива вызываем статические методы .Net библиотеки.
Под 32 разрядными dll и exe все прекрасно.
Скомпилировал под 64 разрядное. Если запускать из экзешника
То все нормально. Но если из 64 разрядной 1С 8.3.9
Выдает ошибку
Необработанное исключение по адресу 0x00007FFD76FB8528 (ucrtbase.dll) в 1cv8.exe: Недопустимый параметр был передан функции, для которой недопустимые параметры вызывают неустранимую ошибку.
Вот экспортируемуе методы
typedef bool(STDMETHODCALLTYPE *ManagedCallAsFunc)(const __int32, const wchar_t*, tVariant* pvarRetValue, tVariant* paParams, const __int32 lSizeArray);
typedef int(STDMETHODCALLTYPE *ManagedGetNParams)(const __int32, const wchar_t*);
typedef bool(STDMETHODCALLTYPE *ManagedGetPropVal)(const __int32, const wchar_t*, tVariant*);
typedef bool(STDMETHODCALLTYPE *ManagedSetPropVal)(const __int32, const wchar_t*, tVariant*);
typedef void(STDMETHODCALLTYPE *ManagedSetDelegate)(void*(*) (long), void(*) (const wchar_t*), void(*) (wchar_t*, wchar_t*,wchar_t*));
typedef void(STDMETHODCALLTYPE *ManagedDeleteObject)(const __int32);
typedef void(STDMETHODCALLTYPE *ManagedSetPath)(const wchar_t*);
typedef int(STDMETHODCALLTYPE *Managedtest)();
Или 1С использует не ту библиотеку?
Прчем сделал метод без параметра int test() и на него ругается. Хотя функции экспортируются
Суть такая из натива вызываем статические методы .Net библиотеки.
Под 32 разрядными dll и exe все прекрасно.
Скомпилировал под 64 разрядное. Если запускать из экзешника
То все нормально. Но если из 64 разрядной 1С 8.3.9
Выдает ошибку
Необработанное исключение по адресу 0x00007FFD76FB8528 (ucrtbase.dll) в 1cv8.exe: Недопустимый параметр был передан функции, для которой недопустимые параметры вызывают неустранимую ошибку.
Вот экспортируемуе методы
typedef bool(STDMETHODCALLTYPE *ManagedCallAsFunc)(const __int32, const wchar_t*, tVariant* pvarRetValue, tVariant* paParams, const __int32 lSizeArray);
typedef int(STDMETHODCALLTYPE *ManagedGetNParams)(const __int32, const wchar_t*);
typedef bool(STDMETHODCALLTYPE *ManagedGetPropVal)(const __int32, const wchar_t*, tVariant*);
typedef bool(STDMETHODCALLTYPE *ManagedSetPropVal)(const __int32, const wchar_t*, tVariant*);
typedef void(STDMETHODCALLTYPE *ManagedSetDelegate)(void*(*) (long), void(*) (const wchar_t*), void(*) (wchar_t*, wchar_t*,wchar_t*));
typedef void(STDMETHODCALLTYPE *ManagedDeleteObject)(const __int32);
typedef void(STDMETHODCALLTYPE *ManagedSetPath)(const wchar_t*);
typedef int(STDMETHODCALLTYPE *Managedtest)();
Или 1С использует не ту библиотеку?
Прчем сделал метод без параметра int test() и на него ругается. Хотя функции экспортируются
Здравствуйте, Serginio1, Вы писали:
Суть такая из натива вызываем статические методы .Net библиотеки.
Под 32 разрядными dll и exe все прекрасно.
Скомпилировал под 64 разрядное. Если запускать из экзешника
То все нормально. Но если из 64 разрядной 1С 8.3.9
В новой версии
https://blogs.msdn.microsoft.com/dotnet/2016/09/13/announcing-september-2016-updates-for-net-core-1-0/
Исправили ошибку
https://github.com/dotnet/coreclr/issues/6460
Сейчас все без ошибок
Суть такая из натива вызываем статические методы .Net библиотеки.
Под 32 разрядными dll и exe все прекрасно.
Скомпилировал под 64 разрядное. Если запускать из экзешника
То все нормально. Но если из 64 разрядной 1С 8.3.9
В новой версии
https://blogs.msdn.microsoft.com/dotnet/2016/09/13/announcing-september-2016-updates-for-net-core-1-0/
Исправили ошибку
https://github.com/dotnet/coreclr/issues/6460
In Jitstartup, JIT creates a file descriptor for stdout and unconditionally passes it to setmode, without checking for failures. This happens at https://github.com/dotnet/coreclr/blob/ee680783778ed0abb186ae41a8c861d5cdcadccd/src/jit/ee_il_dll.cpp#L76.
Failure to check for invalid descriptors can result in setmode triggering failfast.
Сейчас все без ошибок