Clarion 10 & CPP

Разработка программ на пес его знает на чем
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Clarion 10 & CPP

Сообщение Admin »

два файла 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;
}
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
kreator
✯ Ветеран ✯
Сообщения: 4958
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Clarion 10 & CPP

Сообщение kreator »

А попробуй PASCAL на С заменить. Я Сишную библиотеку вот так подцепил:

Код: Выделить всё

MODULE('cv')
  cvNamedWindow(*STRING,LONG),LONG,C,RAW,PROC
END
Прокатило и заработало.
We are hard at work… for you. :)
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Clarion 10 & CPP

Сообщение Admin »

Так ведь дело не в вызове а в линковке. В Clarion 6.3 работало. Сейчас проверить не могу т.к. на x64 сижу. Приходится в C10 писать.
CPP на текущий момент не актуально уже. По теме SSL хотел кое что проверить.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3130
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Clarion 10 & CPP

Сообщение Дед Пахом »

Что-то в проекте не так, линковщик не видит сишный модуль.
С уважением, ДП
Ал
✯ Ветеран ✯
Сообщения: 1011
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия

Clarion 10 & CPP

Сообщение Ал »

Admin писал(а):Так ведь дело не в вызове а в линковке. В Clarion 6.3 работало. Сейчас проверить не могу т.к. на x64 сижу. Приходится в C10 писать.
CPP на текущий момент не актуально уже. По теме SSL хотел кое что проверить.
virtual pc нет или религия не позволяет?
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Clarion 10 & CPP

Сообщение Admin »

Ал писал(а): virtual pc нет или религия не позволяет?
Не стОит. На работе попробую. Virtual Box есть ... СentOS на нем кручу. :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
kreator
✯ Ветеран ✯
Сообщения: 4958
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Clarion 10 & CPP

Сообщение kreator »

Дед Пахом писал(а):Что-то в проекте не так, линковщик не видит сишный модуль.
Скорее всего, что или либа в проект не подключена, или её нет там, где должна быть.
We are hard at work… for you. :)
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Clarion 10 & CPP

Сообщение Admin »

модуль cpp_module.obj создается.
_addition@Fii внутри присутствует.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3130
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Clarion 10 & CPP

Сообщение Дед Пахом »

а если cpp_module.obj включить в проект?
С уважением, ДП
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Clarion 10 & CPP

Сообщение Admin »

Не помогает.
Помогло в атрибуте NAME прописать "_addition@Fii". Скомпилировалось.
Но результат функции - лажа а не 20
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3130
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Clarion 10 & CPP

Сообщение Дед Пахом »

кстати, почему PASCAL?
С уважением, ДП
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Clarion 10 & CPP

Сообщение Admin »

В данном случае по моему не важно. И да, оба варианта не работают :)
В PASCAL еще и падает почему то, хотя не должно.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Clarion 10 & CPP

Сообщение Admin »

Вопрос решен :)

Код: Выделить всё

  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;
}
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ответить