imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 07.10.2005, 23:11     # 1
Crazy_kettle
Junior Member
 
Регистрация: 13.05.2004
Сообщения: 128

Crazy_kettle Известность не заставит себя ждатьCrazy_kettle Известность не заставит себя ждать
C++ plus C project

Может кто знает, как создавать созместный C и C++ проект, т.е. проект который включает как С так и С++ исходные файлы. При попытке копмиляции выдаёт ошибку линковщика (ф-ции не найдены). Пробовал перед ф-циями, написанными на С, ставить __cdecl по аналогии с библиотечными файлами, но это у меня не заработало.
Хотелось бы узнать как можно более общее резение проблемы (работало на разных компиляторах и линковщиках). Хотя буду очень признателен за решение для среды MS Visual Studio (от 6.0)

Дело в том, что на С++ перейти хочу, но многие ф-ции на С написаны (впринципе можно создавать копии с расширением cpp, но этого из-за возможной неразберихи делать не хочется).

Заранее благодарен.
Crazy_kettle вне форума  
Старый 08.10.2005, 07:54     # 2
PSyton
Junior Member
 
Аватар для PSyton
 
Регистрация: 19.04.2002
Адрес: Дом
Пол: Male
Сообщения: 187

PSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форуме
при включении заголовочных файлов C в проект C++ нужно писать примерное так
extern "C"
{
#include "f1.h"
...
}

Тогда линковщик будет нормально видеть C функции.
тоже самое можно делать при объявлении внешних C функций в проекте C++
extern "C" void MyFunk();
__________________
Дураки не динозавры - они не вымрут...
PSyton вне форума  
Старый 09.10.2005, 01:00     # 3
Kuvaldum
Newbie
 
Аватар для Kuvaldum
 
Регистрация: 10.08.2005
Сообщения: 35

Kuvaldum Нуль без палочки
Лучше так обрамлять, тогда будет работать и для С и для С++

#ifdef __cplusplus
extern "C" {
#endif
...
...
#ifdef __cplusplus
} /*extern "C" */
#endif
Kuvaldum вне форума  
Старый 09.10.2005, 01:03     # 4
KapMaH
Newbie
 
Аватар для KapMaH
 
Регистрация: 29.03.2003
Сообщения: 22

KapMaH Путь к славе только начался
Цитата:
Crazy_kettle:
Дело в том, что на С++ перейти хочу, но многие ф-ции на С написаны (впринципе можно создавать копии с расширением cpp, но этого из-за возможной неразберихи делать не хочется).
PSyton дело говорит, проблемы могут возникнуть в случае, если хэдеры (*.h) слишком сложные.
Можно попробовать создать файл MyC_Func.cpp в котором проинклюдировать все нужные *.c файлы
KapMaH вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 21:26.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.