Это немного странно, и я впервые попал в мир .net, так что я надеюсь, что мне не хватает чего-то фундаментального :) Справочная информация:
У меня есть встроенная / Qt c ++ DLL, которую я упаковываю для использования в .NET, C # в этом случае. У меня есть приложение Qt, которое успешно использует эту DLL, без утечек памяти и т. Д. Я создал оболочку c ++ / CLI для этой библиотеки и через нее могу успешно вызывать нативный код. Однако я заметил, что в зависимости от того, как я впервые взаимодействую с управляемой DLL (и, следовательно, с собственной DLL), я вижу исключения AccessViolation.
Если я сначала выделю объект из собственной библиотеки DLL в куче процесса (не в .net), все будет работать, как и ожидалось. Но если я взаимодействую с объектом из собственной библиотеки DLL, создавая его в стеке, а затем выделяю собственный объект в куче, я позже получаю исключения AccessViolation в несвязанном собственном коде DLL. На самом деле мне нужно только выделить собственный объект (и никогда больше не ссылаться на него), чтобы увидеть эти ошибки.
Конечно, проблема стека и кучи может представлять собой красную сельдь, но она воспроизводима на 100%, так что это, по крайней мере, хорошее руководство для выслеживания. Какие-нибудь советы? Спасибо!