C++脚本解释器-Cint介绍

小编辑 发布于 2010/05/18 11:56
阅读 3K+
收藏 3

准备工作

  1. msys和mingw, Cint使用Unix系的编译风格,configure和make需要GNU的Shell。在Windows下,可以使用msys(主页: www.mingw.org, 个人认为,作为C++编程人员,msys应该是必备的)。
  2. VC,这是费话,呵呵,我用的是VC2005 Express。当然,如果你用的是其它编译器也行。
  3. 安装好msys后,在msys\bin里建一个文本文件:cygpath, 里面的内容为:
    #!/bin/sh
    # A simple cygpath replacement

    until [ -z "$1" ]
    do
    if [ "${1:0:1}" != "-" ]; then
    echo $1 | sed -e 's/\\/\//g' -e 's/^\([a-zA-Z]\):/\/\1/g'
    fi
    shift
    done
    CInt的make文件里使用了cygpath命令,这个命令是把Windows风格的路径改成Unix风格。由于msys两种风格都能支持,所以就没有 提供这个命令,只能自己写一个凑数啦。

开始编译

  1. 进入VC命令行环境
  2. 在VC命令行环境下执行msys.bat进入msys,这样进入的msys才能正确调用VC编译器。
  3. 输入./configure --arch=msvc8,后面的msvc8根据你的编译器决定,可选的有:linux linuxicc macgcc djgpp cygwin mingw mwerks hpux aix msvc7 msvc8 solaris solarisgcc
  4. 很快执行后会生成一个叫makefile.conf的文本文件,如果愿意,可以把makefile.conf里的编译选项-MD 改成-MT。
  5. 输入make编译,最终生成libcint.dll、libcint.lib、cint.exe、makecint.exe四个 东东,以及脚本专用头文 件。
  6. 到这里,我们Cint的编译工作已经完成。

编译脚本预编译库

现在我们已经可以用Cint编写可解析C++语言的程序了,当然里面用到的函数都得自己写。另外,Cint已经提供了一部分库代码,只 要编译好这些代码并把相应的 DLL放到Include目录里就可以在脚本中当作普通头文件来用了。

Cint所有库代码都在lib目录里,这里以win32api为例,这个库提供了一小部分WinAPI函数供脚本使用

还是在msys中

  1. 首先把\include\windows.h和\include\winsock.h改名,比如改成_windows.h和 _winsock.h。这是为 了防止编译时引用错头文件(现在要的是VC自带的windows.h)
  2. 进入lib\win32api
  3. 输入makecint -mk Makewin -dl win32api.dll -h +P cintwin.h -P winfunc.h -cint -Z0, 生成一个名为Makewin文件
  4. 修改Makewin。(唉,都是Unix和Win不同造成的)
    # CINT := $(shell whereis cint.exe)
    # 改成
    # CINT := 绝对路径cint.exe,比如我的CINT := D:\Code\libs\cint-5.16.19\cint.exe

    # LIBS := -LIBPATH:$(CINTSYSDIRW) $(subst @imp@,cint,lib@imp@.lib) kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib
    # 改成
    # LIBS := $(CINTSYSDIRW)$(subst @imp@,cint,lib@imp@.lib) kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib

    # CINTSYSDIRW := $(shell cygpath -m $(CINTSYSDIRU) )
    # 改成
    # CINTSYSDIRW := $(CINTSYSDIRU)
  5. 如果愿意,可以把-MD选项改成-MT
  6. 搞定后输入 make -f Makewin
  7. 如果没出错,会生成一个win32api.dll文件,把它复制到\include里
  8. 最后别忘了把之前改名的\include\windows.h和\include\winsock.h改回来
  9. 为了验证是否正确编译,可以用VC打开\demo\Win32App\graph01目录下的项目文件编译试试。(注意要修改一 下项目的路径设置)
加载中
0
M
Meduzer

不想说它了,递归极限是十几层,被坑死了,还有其他各种bug

返回顶部
顶部