только смотрел этот доклад на тему P/Invoke, там правда объяснялось почему на винде last error может быть повреждена в процессе вызова. Для этого на DllImport есть .SetLastError.
UPD: походу LastWind32Error работает на линуксе
а. да, в общем случае не обязательно. если всё делать под net core 3, например, то там есть dll maping и там всё ок. у меня, к сожалению, два целевых фреймворка, второй про мапинг ничего не знает. как в таком случае под сигнатуру одного метода загнать вызов управляемой функции на винде и pinvoke на линуксе? работать-то работает, но у меня возвращает, например, 0, когда по факту там не 0 и линуксовый GetLastError возвращает правильный код ошибки...при этом SetLastError везде стоит. т.е. не работает=)
Обсуждают сегодня