На что может влиять "Enable the Visual Studio hosting process"???
От: mDmitriy Россия  
Дата: 05.01.15 10:32
Оценка:
Всем привет!

Работаю со Scilab, загружаю проект из примеров для NET в VS2012 (4.0, AnyCPU, OS W7 х64), запускаю консольное приложение — все работает.
Вообще пример представляет собой оболочку над бинарными dll Scilab'а, обращения к методам которых происходят через обычный PInvoke.
Как известно, по умолчанию консольные приложения грузятся в VS с установкой UseVSHostingProcess=true (Enable the Visual Studio hosting process).
При снятии этой галочки пример работать перестает.
Причем перестает при попытке передачи строкового параметра в метод — просто беззвучно вылетает с ошибкой 0xc0000409 (неправильный стек) даже под отладчиком.
Это, к счастью, лечится, если явно указать тип маршализации строки, например:
[DllImport(API_SCILAB_DLL, CharSet = CharSet.Ansi)]
public unsafe static extern api_Err getNamedVarDimension([In]IntPtr pvApiCtx, [In] /*[MarshalAs(UnmanagedType.LPWStr)]*/ String _pstName, [Out] Int32* _piRows, [Out] Int32* _piCols);

При раскомментаривании MarshalAs... начинает работать независимо от галочки "Visual Studio hosting process".
Вопросов, собственно, два:
1) Причем тут hosting process???
2) Есть ли другой способ нейтрализовать его влияние?
Спасибо...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.