Здравствуйте Kaa, Вы писали:
Kaa>Здравствуйте Nondefine, Вы писали:
N>>Есть такая проблема. В фортрановском файлике определена функция:
N>>INTEGER*4 function my()
Kaa>...
N>>Потом ее нужно вызвать из сишного:
N>>extern int __stdcall my();
N>>В результате при линковке всего этого дела в VC 6.0 с встроенным Compac Visual Fortran 6.1 получаю unresolved external _my.
N>>Как с этим бороться?
Kaa>Ответа я не знаю. Сразу говорю. Но можно попытаться.
Kaa>Возможно, дело в декорировании имен. Либо в несоответствии соглашений о вызовах. В первом случае ни в одном из прилинкованных obj-файлов не будет найдена функция, требуемая С-шным компилятором. (можно поискать любым текстовым редактором соответствие)
Kaa>Можно попытаться посмотреть (в map-файле), во что преобразуется имя my. Возможно, поможет вставка "C" между extern и int:
Kaa>Kaa>extern "C" int __stdcall my();
Kaa>
Kaa>Возможно, что и не поможет. Если точно не известно, что фортранные функции имеют соглашение о вызовах __stdcall, то можно попробовать __cdecl.
Известно точно (описано в MSDN), что фортрановские функции, вызываемые из С, должны декларироваться с __stdcall. Но как ни странно и мсдеэновский сампл тоже не линкуется.