Я вызываю нативную C ++ DLL.На самом деле я сделал это дважды (две разные программы на C #, две разные программы на C ++).Оба раза я создаю память на стороне C #.Оба раза я использовал довольно сложные маршалловые структуры, которые отправлял по ссылке.
Однако одна из моих программ работает нормально.
Другая работает до тех пор, пока собственный C ++ не попытается прочитать значение изданные отправлены.Но тогда взрыв , я столкнулся с ошибкой памяти, защищенной от чтения / записи?
Я не понимаю, как две программы, созданные с использованием одной и той же Visual Studio, могут привести к тому, что одна из них позволит мнедоступ к памяти и прочее запрещены.
Я проверил настройки, оба в настройках проекта в значительной степени идентичны?
В проекте возникли проблемы, я даже уменьшил отправленные данныек структуре точно такого размера, как так:
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Ansi)]
struct Shared2_s
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)]
public byte[] filler2;
//40
}