Разработка программ на пес его знает на чем
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Admin
Администратор
Сообщения: 3962 Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 27 раз
Поблагодарили: 22 раза
Контактная информация:
Сообщение
Admin » 24 Октябрь 2015, 5:12
два файла CPP_Demo.clw и cpp_module.cpp
оба компилируются но потом выдается:
Unresolved External _addition in CPP_Demo.obj
почему не находит?
Код: Выделить всё
PROGRAM
MAP
MODULE('cpp_module.cpp')
addition(LONG, LONG), LONG, PASCAL, NAME('_addition')
END
END
CODE
MESSAGE(addition(10,10))
Код: Выделить всё
int addition (int a, int b)
{
int r;
r = a + b;
return r;
}
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Admin
kreator
✯ Ветеран ✯
Сообщения: 4994 Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 21 раз
Сообщение
kreator » 24 Октябрь 2015, 13:33
А попробуй PASCAL на С заменить. Я Сишную библиотеку вот так подцепил:
Код: Выделить всё
MODULE('cv')
cvNamedWindow(*STRING,LONG),LONG,C,RAW,PROC
END
Прокатило и заработало.
We are hard at work… for you.
kreator
Admin
Администратор
Сообщения: 3962 Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 27 раз
Поблагодарили: 22 раза
Контактная информация:
Сообщение
Admin » 24 Октябрь 2015, 13:37
Так ведь дело не в вызове а в линковке. В Clarion 6.3 работало. Сейчас проверить не могу т.к. на x64 сижу. Приходится в C10 писать.
CPP на текущий момент не актуально уже. По теме SSL хотел кое что проверить.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Admin
Дед Пахом
Старичок
Сообщения: 3136 Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 11 раз
Поблагодарили: 31 раз
Контактная информация:
Сообщение
Дед Пахом » 24 Октябрь 2015, 16:17
Что-то в проекте не так, линковщик не видит сишный модуль.
С уважением, ДП
Дед Пахом
Ал
✯ Ветеран ✯
Сообщения: 1014 Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия
Поблагодарили: 1 раз
Сообщение
Ал » 24 Октябрь 2015, 17:22
Admin писал(а): Так ведь дело не в вызове а в линковке. В Clarion 6.3 работало. Сейчас проверить не могу т.к. на x64 сижу. Приходится в C10 писать.
CPP на текущий момент не актуально уже. По теме SSL хотел кое что проверить.
virtual pc нет или религия не позволяет?
Ал
Admin
Администратор
Сообщения: 3962 Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 27 раз
Поблагодарили: 22 раза
Контактная информация:
Сообщение
Admin » 24 Октябрь 2015, 17:40
Ал писал(а): virtual pc нет или религия не позволяет?
Не стОит. На работе попробую. Virtual Box есть ... СentOS на нем кручу.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Admin
kreator
✯ Ветеран ✯
Сообщения: 4994 Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 21 раз
Сообщение
kreator » 25 Октябрь 2015, 12:32
Дед Пахом писал(а): Что-то в проекте не так, линковщик не видит сишный модуль.
Скорее всего, что или либа в проект не подключена, или её нет там, где должна быть.
We are hard at work… for you.
kreator
Admin
Администратор
Сообщения: 3962 Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 27 раз
Поблагодарили: 22 раза
Контактная информация:
Сообщение
Admin » 25 Октябрь 2015, 12:35
модуль cpp_module.obj создается.
_addition@Fii внутри присутствует.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Admin
Дед Пахом
Старичок
Сообщения: 3136 Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 11 раз
Поблагодарили: 31 раз
Контактная информация:
Сообщение
Дед Пахом » 25 Октябрь 2015, 13:10
а если cpp_module.obj включить в проект?
С уважением, ДП
Дед Пахом
Admin
Администратор
Сообщения: 3962 Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 27 раз
Поблагодарили: 22 раза
Контактная информация:
Сообщение
Admin » 25 Октябрь 2015, 13:22
Не помогает.
Помогло в атрибуте NAME прописать "_addition@Fii". Скомпилировалось.
Но результат функции - лажа а не 20
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Admin
Дед Пахом
Старичок
Сообщения: 3136 Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 11 раз
Поблагодарили: 31 раз
Контактная информация:
Сообщение
Дед Пахом » 25 Октябрь 2015, 13:27
кстати, почему PASCAL?
С уважением, ДП
Дед Пахом
Admin
Администратор
Сообщения: 3962 Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 27 раз
Поблагодарили: 22 раза
Контактная информация:
Сообщение
Admin » 25 Октябрь 2015, 14:08
В данном случае по моему не важно. И да, оба варианта не работают
В PASCAL еще и падает почему то, хотя не должно.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Admin
Admin
Администратор
Сообщения: 3962 Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 27 раз
Поблагодарили: 22 раза
Контактная информация:
Сообщение
Admin » 25 Октябрь 2015, 14:37
Вопрос решен
Код: Выделить всё
PROGRAM
MAP
MODULE('cpp_module.cpp')
addition(LONG, LONG), LONG, NAME('_addition')
END
END
CODE
MESSAGE(addition(10,10))
Код: Выделить всё
extern "C" int addition (int a, int b)
{
int r;
r = a + b;
return r;
}
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Admin