将flex文件编译成dll

将flex文件编译成dll,dll,compilation,cygwin,flex-lexer,Dll,Compilation,Cygwin,Flex Lexer,我用flex(cygwin)创建了一个lexer。通常我把它编译成一个.exe文件 对于最新的项目,我需要一个lexer,用于运行在windowsxp上的更大的C#程序。当然,我可以使用System.Diagnostics.Process执行文件。但这对我来说不是最好的解决方案,因为我希望该程序能在多台机器上运行 我怎样才能在cygwin下创建一个拥有lexer源代码的dll 先谢谢你。。。 Szpilona < /P> < P> Flex生成一个具有yLyEx()函数的C或C++源文件。 在语

我用flex(cygwin)创建了一个lexer。通常我把它编译成一个.exe文件

对于最新的项目,我需要一个lexer,用于运行在windowsxp上的更大的C#程序。当然,我可以使用System.Diagnostics.Process执行文件。但这对我来说不是最好的解决方案,因为我希望该程序能在多台机器上运行

我怎样才能在cygwin下创建一个拥有lexer源代码的dll

先谢谢你。。。
Szpilona < /P> < P> Flex生成一个具有yLyEx()函数的C或C++源文件。 在语法(.l文件)上运行flex以生成.c或.cpp文件,然后使用gcc-c编译该文件以生成对象文件,或者使用gcc-shared编译该文件以生成.so库

flex toy.l
gcc -shared toy.lexer.c

Flex或Flex++将生成一个lexer,可以使用或不使用cywgin进行编译。你也可以使用明文或VisualC++。< / P>嗯,我已经试过了。确切地说,我在语法上运行了flex,然后用:gcc-clekser.cgcc-shared-o lekser.dll编译了获得的c文件。创建了lekser.o dll文件,但它不起作用。我尝试使用以下代码访问库:[DllImport(“lekser.dll”)]public static extern int yylex();但发生了DllNotFound异常。当然,该文件被放在正确的目录中,并且C代码是正确的(至少它可以与我创建的另一个dll一起工作,以测试这一点)。这就是为什么我认为在语法文件上运行flex时需要一个选项。dll在您的路径中吗?该异常是“找到文件”类型的异常。