![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
vitaliska |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 21.4.2006 Репутация: нет Всего: нет |
Здравствуйте!
Никак не могу решить проблему с линковкой при смешанном программировании. Есть процедуры на фортране (Intel Fortran Compiler 8.1 /интегрирован в MVS 2003/). Нужно вызвать их в C++ (MVS 2003). Беру пример из книги: Файл f90: SUBROUTINE FR1(N, M) Рњ = N * N RETURN END INTEGER FUNCTION FF1(N) FF1 = N * N * N RETURN END Файл .cpp #include <iostream.h> extern "C" { void __stdcall FRl(int *, int *); int __stdcall FFl(int *); } void main { int трали-вали FRl(&n,&что-нибудь) и так далее... } Теперь: в проекте и в директории у меня .cpp и .f90. Что еще нужно для линковки? Никаких библиотек нет. В чем причина error lnk2019 unresolved ... Почему не понимает обращение к процедуре? Что я забыл сделать? Нужен ли хедер-файл? Если да то почему про него нет ни в одной книге и ни в одном примере в сети. По гуглу смотрел - практически одинаковые примеры и нет полного описания как что соединять нужно - только файлы фортрана и си++. Объясните пожалуйста... заранее спасибо! Это сообщение отредактировал(а) vitaliska - 21.4.2006, 00:58 |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Из сообщения линкера "unresolved ..." можно сделать вывод, чего же ждет компоновщик. А ты его как раз не привел.
-------------------- ... |
|||
|
||||
vitaliska |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 21.4.2006 Репутация: нет Всего: нет |
Моя процедура в f90 называется PLUS. Все по аналогии с примером выше.
Вот что пишет компоновщик: Проект: Use_oper Use_oper error LNK2019: unresolved external symbol _PLUS@8 referenced in function _main Use_oper fatal error LNK1120: 1 unresolved externals Вот с dll кое-как работает через _declspec(dllimport), но мне бы хотелось работать напрямую с процедурами без создания dll. Это сообщение отредактировал(а) vitaliska - 21.4.2006, 10:56 |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Это в смысле прямо подключать к модулю объектный файл? А как ты эту процедуру для cpp объявляешь? Точно не забыл случайно extern "C"? Вот это "_PLUS@8" больно похоже на декорированное cpp-имя, чего не должно быть, если процедура объявлена как extern "C". А еще я бы посмотрела внутрь obj-файла (фортрановского), как там функция называется... -------------------- ... |
|||
|
||||
MIG |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 6.11.2005 Репутация: нет Всего: 1 |
хрень какая-то
|
|||
|
||||
vitaliska |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 21.4.2006 Репутация: нет Всего: нет |
MIG - твой комментарий нам очень помог...спасибо...
Везде пишут примеры на f и на си, а как дальше все это выполнять (OC - xp sp2) - опускается... Это сообщение отредактировал(а) vitaliska - 21.4.2006, 21:20 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
2 Пользователей читают эту тему (2 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |