вызов BCB dll из C # - PullRequest
       4

вызов BCB dll из C #

0 голосов
/ 11 ноября 2010

Мне нужно вызвать функцию dll, написанную на Borland C ++ Builder 6.0 из приложения C # 4.0. Я могу успешно вызывать другие функции из этой библиотеки, но не желаемой. Отличие этой функции в том, что она показывает окна VCL GUI. Я подозреваю, что это проблема, потому что я успешно вызываю эту функцию из проекта C ++. Я даже создал свой собственный Cll-упаковщик Dll, который оборачивает мою целевую библиотеку BCB - результат тот же. Я постоянно получаю SEHException, что означает, что внутреннее исключение в моем Dll выдается, но я не могу определить, какого рода, потому что я не могу отладить эту DLL.

Есть ли у вас какие-либо идеи по этому поводу?

1 Ответ

1 голос
/ 13 декабря 2010

После игры с вызовом конверсий в демонстрационном проекте я обнаружил, что SEHException не генерируется, если вы неверны с соглашениями и маршалингом, вы никогда не получите SEHException, кроме исключений памяти / доступа.нашел причину.Это было очень глупо. Если dll вызывался из папки, содержащей строку «bin» (случай .NET), то файл не мог быть создан, и исключение C ++ Builder вызывалось с помощью подпрограммы SEH :) Именно поэтому вызов из C ++ был успешным.

Краткое резюме:

  • SEH Исключение означает внутреннее исключение в вашей Dll.В C ++ Builder все исключения основаны на этом.

  • Попробуйте отладить оригинальный источник, даже если вы, похоже, уверены в том, что происходит.

...