Может быть, не тот ответ, который вы ищете, но лучшее, что я могу придумать, основываясь на этом вопросе.
Я бы начал с более простого примера и работал бы оттуда.Например, начните с изменения вашей функции, чтобы она ничего не делала, а только возвращала, как это:
int Graph::add_node(int num)
{
return 1;
}
Сбой даже в этом случае?Если это так, то проблема не в функции и, скорее всего, в коде оболочки.Может быть, измените код оболочки, чтобы он тоже ничего не делал:
SWIGEXPORT int SWIGSTDCALL CSharp_Graph_add_node__SWIG_0(void * jarg1, int jarg2) {
return 1;
}
Это все еще дает сбой?Если это так, то, скорее всего, это проблема замедления или неправильные настройки компилятора (смешение соглашений о вызовах, 32-битных или 64-битных, несовместимых библиотек или внешних зависимостей и т. Д.).
Если первый из приведенных выше исправляет сбой, то, скорее всего, ошибка вваш код, в основном, как я подозреваю, что memset () - я бы начал добавлять все больше и больше кода обратно в функцию, пока он не выйдет снова, чтобы точно определить, где происходит сбой.
Этовсе предполагает, что вы не можете пройти через отладчик - я предполагаю, что если бы вы могли это сделать, вы бы не задавали этот вопрос в первую очередь.Я постараюсь помочь, если вы предоставите больше подробностей, например, результаты вышеупомянутых тестов.
Редактировать: Если он доходит до вашего кода C ++ до сбоя, вы можете попробовать отладку, используя OutputDebugString .