【发布时间】:2013-12-05 16:50:54
【问题描述】:
我想编译我的 flex scanner.l 以便从我的 C/C++ 项目中调用动态库。正确的做法是什么?我能否在不同的线程中同时从我的 C/C++ 程序调用扫描仪?
【问题讨论】:
-
使用编译器创建任何其他动态库的方式相同。你用的是哪个编译器?
-
我使用 gcc。使用 flexscanner.l 我生成了 lex.yy.c,那么如何从另一个程序调用扫描仪?
-
让您的其他程序调用 lex.yy.c 中定义的方法。当你去编译时,告诉 gcc 编译你的主程序和 lex.yy.c。让它成为一个动态库似乎有点矫枉过正。
-
我想要一个.so,因为我想学习如何去做。过去我已经尝试过您描述的方法,并且有很多限制。我记得一个:lex.yy.c 方法使用许多全局变量,这使得扫描程序无法在不同的线程上运行。拥有一个动态库可能是解决多线程问题的一个步骤。
-
Flex 可以生成可重入解析器(对多线程应用程序安全):flex.sourceforge.net/manual/Reentrant.html
标签: c++ c flex-lexer