Я компилирую программу Fortran для Windows с Visual Studio 2012 и Intel Fortran 2013. В программе я вызываю функцию C, которая является частью статической библиотеки:
call myfunction(arg1,arg2,...);
Когда я запускаю в режиме отладки, все в порядке. Когда я запускаю его в режиме выпуска, программа падает во время вызова этой функции (я проверяю ее, выводя на экран до/после вызова) со следующей ошибкой:
forrtl: severe (157): Program Exception - access violation
Теперь интересная часть, если я добавлю операторы печати после и до вызова следующим образом
print 'Calling myfunction'
call myfunction(arg1,arg2,...);
print 'myfunction finished'
программа отлично работает в режиме выпуска. Если я удаляю один из операторов печати (или оба), я получаю указанную выше ошибку!
Кто-нибудь знает, что здесь может происходить?
Дополнительная информация:
Объявление функции на Фортране:
!DEC$ ALIAS myfunction, 'myfunction'
Объявление функции в C:
extern "C" void myfunction(double *arg1, double *arg2, ...)