- 论坛徽章:
- 0
|
我现在想在C中去引用C++的函数,所以得分别编译。
我的思路是,C文件用GCC编译,CPP文件用G++编译,之后再用GCC去链接这两个文件。
具体如下:
a.c是主函数main所在文件:
#include "my_net_transfer.h"
extern void my_net_transfer( void );
main()
{
pthread_t id;
pthread_mutex_lock( &mymutex );
pthread_mutex_init( &mymutex, NULL );
pthread_create( &id, NULL, (void *)my_net_transfer, NULL );
…… ……
pthread_mutex_unlock( &mymutex );
}
my_net_transfer.h主要是被调用函数所在文件:
extern "C" void my_net_transfer( void );
my_net_transfer.cpp中
#include "a.h"
void my_net_transfer( void )
{
pthread_mutex_lock( &mymutex );
…… ……
pthread_mutex_unlock( &mymutex );
}
Makefile(只用一个makefile,先编译CPP文件,再编译C文件)中
NETOBJ = my_net_transfer.o
NETSRC = my_net_transfer.cpp
CXX = bfin-linux-uclibc-g++
$(NETOBJ): $(NETSRC)
$(CXX) $(CFLAGSNET) $(INCLD) -c $^
a$(EXESUF): a.o $(NETOBJ)
$(CC) $(CFLAGS) $(LDFLAGS) $(INCLD) -o $@ $< $(EXTRALIBS) -lpthread -l$(LIB_NAME)
编译出错:
undefined reference to '_my_net_transfer'
collect2: ld returned 1 exit status |
|