Информация об изменениях

Сообщение 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() и на него ругается. Хотя функции экспортируются
Здравствуйте, 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

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.


Сейчас все без ошибок