Страница 1 из 1
					
				Clarion 10 & CPP
				Добавлено: 24 Октябрь 2015, 5:12
				 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;
}
 
			 
			
					
				Clarion 10 & CPP
				Добавлено: 24 Октябрь 2015, 13:33
				 kreator
				А попробуй PASCAL на С заменить. Я Сишную библиотеку вот так подцепил:
Код: Выделить всё
MODULE('cv')
  cvNamedWindow(*STRING,LONG),LONG,C,RAW,PROC
END
Прокатило и заработало.
 
			 
			
					
				Clarion 10 & CPP
				Добавлено: 24 Октябрь 2015, 13:37
				 Admin
				Так ведь дело не в вызове а в линковке. В Clarion 6.3 работало. Сейчас проверить не могу т.к. на x64 сижу. Приходится в C10 писать.
CPP на текущий момент не актуально уже. По теме SSL хотел кое что проверить.
			 
			
					
				Clarion 10 & CPP
				Добавлено: 24 Октябрь 2015, 16:17
				 Дед Пахом
				Что-то в проекте не так, линковщик не видит сишный модуль.
			 
			
					
				Clarion 10 & CPP
				Добавлено: 24 Октябрь 2015, 17:22
				 Ал
				Admin писал(а):Так ведь дело не в вызове а в линковке. В Clarion 6.3 работало. Сейчас проверить не могу т.к. на x64 сижу. Приходится в C10 писать.
CPP на текущий момент не актуально уже. По теме SSL хотел кое что проверить.
virtual pc нет или религия не позволяет?
 
			 
			
					
				Clarion 10 & CPP
				Добавлено: 24 Октябрь 2015, 17:40
				 Admin
				Ал писал(а): virtual pc нет или религия не позволяет?
 
Не стОит. На работе попробую. Virtual Box есть ... СentOS на нем кручу. 

 
			 
			
					
				Clarion 10 & CPP
				Добавлено: 25 Октябрь 2015, 12:32
				 kreator
				Дед Пахом писал(а):Что-то в проекте не так, линковщик не видит сишный модуль.
Скорее всего, что или либа в проект не подключена, или её нет там, где должна быть.
 
			 
			
					
				Clarion 10 & CPP
				Добавлено: 25 Октябрь 2015, 12:35
				 Admin
				модуль cpp_module.obj создается. 
_addition@Fii внутри присутствует.
			 
			
					
				Clarion 10 & CPP
				Добавлено: 25 Октябрь 2015, 13:10
				 Дед Пахом
				а если cpp_module.obj включить в проект?
			 
			
					
				Clarion 10 & CPP
				Добавлено: 25 Октябрь 2015, 13:22
				 Admin
				Не помогает. 
Помогло в атрибуте NAME прописать "_addition@Fii". Скомпилировалось.
Но результат функции - лажа а не 20
			 
			
					
				Clarion 10 & CPP
				Добавлено: 25 Октябрь 2015, 13:27
				 Дед Пахом
				кстати, почему PASCAL?
			 
			
					
				Clarion 10 & CPP
				Добавлено: 25 Октябрь 2015, 14:08
				 Admin
				В данном случае по моему не важно. И да, оба варианта не работают 

В PASCAL еще и падает почему то, хотя не должно.
 
			 
			
					
				Clarion 10 & CPP
				Добавлено: 25 Октябрь 2015, 14:37
				 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;
}