vc++怎么调.tab.c和.yy.c文件中的函数

vc++如何调.tab.c和.yy.c文件中的函数
现在遇到个问题:有已经编译好的.ta.c和.yy.c文件,,我把它添加到c++工程中,#include "xxx.tab.c" #include "xxx_yy.c"后,希望是这样的结果,,在c++某个类中,调用yyin yyparse等。可是现在发现它们两个文件中好多名字是重复的
1>Linking...
1>cwlex_yy.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specification
1>cwy_tab.obj : error LNK2005: _yylex already defined in cwlex_yy.obj
1>cwy_tab.obj : error LNK2005: _yyrestart already defined in cwlex_yy.obj
1>cwy_tab.obj : error LNK2005: _yy_switch_to_buffer already defined in cwlex_yy.obj
1>cwy_tab.obj : error LNK2005: _yy_load_buffer_state already defined in cwlex_yy.obj
1>cwy_tab.obj : error LNK2005: _yy_create_buffer already defined in cwlex_yy.obj
1>cwy_tab.obj : error LNK2005: _yy_delete_buffer already defined in cwlex_yy.obj
1>cwy_tab.obj : error LNK2005: _yy_init_buffer already defined in cwlex_yy.obj
1>cwy_tab.obj : error LNK2005: _yy_flush_buffer already defined in cwlex_yy.obj
1>cwy_tab.obj : error LNK2005: _yy_scan_buffer already defined in cwlex_yy.obj
1>cwy_tab.obj : error LNK2005: _yy_scan_string already defined in cwlex_yy.obj
1>cwy_tab.obj : error LNK2005: _yy_scan_bytes already defined in cwlex_yy.obj
1>cwy_tab.obj : error LNK2005: _LexFromFile already defined in cwlex_yy.obj
1>cwy_tab.obj : error LNK2005: _LexFromString already defined in cwlex_yy.obj
1>cwy_tab.obj : error LNK2005: _wxExprCleanUp already defined in cwlex_yy.obj
1>cwy_tab.obj : error LNK2005: _yyin already defined in cwlex_yy.obj
1>cwy_tab.obj : error LNK2005: _yyout already defined in cwlex_yy.obj

希望高手讲下:如何把flex和bison生成的c文件弄到c++工程中,由我来调用。

extern "C" void LexFromFile(FILE *fd);
extern "C" void LexFromString(char *buf);
这样的代码是用来调用c函数的?

------解决方案--------------------
extern "C" void LexFromFile(FILE *fd);
extern "C" void LexFromString(char *buf);
这样的代码是用来调用c函数的?

是的。

重复文件名,改名吧。

------解决方案--------------------
看看是不是头文件重复包含了
------解决方案--------------------
如果都是定义怎么共用呢?
------解决方案--------------------
强烈建议 改名吧
------解决方案--------------------
你include了cpp当然会重复定义.
自己写个.h文件来调用就好了
------解决方案--------------------
xx.h
extern "C" 
{
void LexFromFile(FILE *fd);
void LexFromString(char *buf);
}

在你的cpp里include "xx.h"
------解决方案--------------------
用 extern "C"再声明一遍吧