LINUX.ORG.RU

MinGW не реагирует на extern «C»


0

0

библиотеку компилит нормально а при создании экзешника так redir.exe -o a -eo g++ -O2 -DGCC main.cpp -lglu32 -lopengl32 -lglut32 -lglaux -l3dsftk -lcoldet

пишет C:/programs/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../libcoldet.a(box.o):box. cpp:(.text+0x1ae0): undefined reference to `tri_tri_intersect' а она в box.cpp определяется так extern "C" { int tri_tri_intersect(float V0[3],float V1[3],float V2[3], float U0[3],float U1[3],float U2[3]); };

Эт можно как нить исправить?

вот настройки makefile либы

PROJECT=coldet LIB=libcoldet.a CC=g++ OPT=-O2 CFLAGS=-c $(OPT) -DGCC OBJS= \ coldet.o \ coldet_bld.o \ box.o \ box_bld.o \ tritri.o \ math3d.o \ sysdep.o \ mytritri.o

all: $(LIB)

$(LIB): $(OBJS) rm -f $(LIB) ar cr $(LIB) $(OBJS) ranlib $(LIB)

coldet.o: coldet.cpp $(CC) $(CFLAGS) coldet.cpp

coldet_bld.o: coldet_bld.cpp $(CC) $(CFLAGS) coldet_bld.cpp

box.o: box.cpp $(CC) $(CFLAGS) box.cpp

box_bld.o: box_bld.cpp $(CC) $(CFLAGS) box_bld.cpp

tritri.o: tritri.c $(CC) $(CFLAGS) tritri.c

mytritri.o: mytritri.cpp $(CC) $(CFLAGS) mytritri.cpp

math3d.o: math3d.cpp $(CC) $(CFLAGS) math3d.cpp

sysdep.o: sysdep.cpp $(CC) $(CFLAGS) sysdep.cpp

clean: rm *.o $(LIB)


Приведенный кусок кода функцию объявляется, а не определяет. В файле в котором эта функция реализована она тоже описана как extern "C"?

Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

Неа, оказалось что нет. Но она была в файле с расширением *.c Определил перед реализацией и всё откомпилилось. Спасибо :)

Это наверно либо автор ошибся, либо в g++ для linux, если файл *.c то автоматически функции определяются как extern "c", покрайней мере в msvc++ 6 так.

Hokkum
() автор топика
Ответ на: комментарий от Hokkum

> g++ си файлы как си++ компилить т.е. не различает по расширению а msvc различает

Ну так g++ - это вызов компилятора C++. Используй комманду gcc - она в зависиомсти от расширения будет вызывать нужный компилятор.

kpanic ★★
()
Ответ на: комментарий от Hokkum

Усё, сам нашел) надо библиотеку libstdc++ -lstdc++ подключать просто.

Hokkum
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.