![]() |
|
Модераторы: xvr |
![]()
|
|
| YonasBriginas |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 25.2.2006 Репутация: нет Всего: нет |
скомпилировал сишную функцию, а потом объектный файл прилинковал к фортрановскому. (из фортрана вызвал сишную функцию). так у меня компилятор ругается на то, что тип string ему неизвестен. не подскажете, какой выход из этой ситуации?
icc -c test.cpp ifort test1.f90 test.o и выдаёт типа: неизвестныое объявление std::string::string(...) и тому подобное. зы извиняюсь, что пример не могу привести, т.к. нет под рукой линукса. |
|||
|
||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 4 Всего: 317 |
тип string в оригинальном Си не существует.
ты используешь вроде интелевский компилятор, а файл у тебя видимо не Си а Си++. короче, используй флаг компотобильности с ANSI. и убери string, cout, cin, и т.д. - сделай функцию на Си. пока. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
| YonasBriginas |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 25.2.2006 Репутация: нет Всего: нет |
не корректно выразился. да, с++ ф-ция. если бы у меня была только одна ф-ция, то конечно переделал бы. но объём кода большой и убирать равносильно переписыванию всего...
на счёт флага совместимости можно подробнее? и есть варианты, чтобы не переписывать код на си++? в win32 компиляторы df и cl отлично ладят. может библиотеку подключить какую-нить. только какую.... Это сообщение отредактировал(а) YonasBriginas - 4.4.2006, 16:17 |
|||
|
||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 4 Всего: 317 |
дело твое в принципе возможное но муторное. Если с аглиццким нет проблем, почитай о разницах:
http://www.math.utah.edu/software/c-with-f...ml#common-types между Фортраном и Си++ есть 3 базовых типа: int <=> INTEGER float <=> REAL double <=> DOUBLE PRECISION и следовательно все связи между модулями должны происходить именно этими типами. в Си++ добавляется проблема строения класса ( не кострукции, а из чего создают ), и там vptr всю малину портит. короче, то что ты делаешь называется просто: гемор. как именно связывать фортран с либами Си++ - ртфм мануал компилятора. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
| YonasBriginas |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 25.2.2006 Репутация: нет Всего: нет |
связи между языками настроил достаточно просто.
нашёл в мануалах! там просто надо было подключить libstdc++ (путь до него тоже надо указывать) линкуется на ура. только вот теперь надо разбираться с исключениями в линуксе умя абортит когда исключение генерю. спасиб за урл. Это сообщение отредактировал(а) YonasBriginas - 5.4.2006, 16:19 |
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |