perl.exe的生成比较简单,copy runperl.c perlmain.c 即拷贝为perlmain.c 再加perlexe.rc perl518.lib生成。
使用vs工程编译,这样就可以vs调试了。
自己以可以整理一份perl518.dll的生成命令。
make文件如下:
@echo off call "D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 set include=include;dllsrc\src;%include% set lib=lib;%lib% set CFLAGS_O= -nologo -GF -W3 -GS- -DWIN32 -D_CONSOLE -DNO_STRICT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DPERLDLL -DPERL_CORE -O1 -MD -Zi -DNDEBUG -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO set CXX_FLAG= -TP -EHsc set LIBFILES= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib del *.obj cl -c %CFLAGS_O% dllsrc\*.c cl -c %CFLAGS_O% dllsrc\win32\*.c cl -c %CFLAGS_O% dllsrc\ext\*.c cl -c %CFLAGS_O% %CXX_FLAG% perllib.c cl -c -nologo -GF -W3 -GS- -O1 -MD -Zi -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERLDLL -O1 -MD -Zi -DNDEBUG -DVERSION=\"1.18\" -DXS_VERSION=\"1.18\" -DLIBC="msvcrt.lib" dllsrc\ext\DynaLoader.c cl -c -nologo -GF -W3 -GS- -O1 -MD -Zi -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERLDLL -UUSEIMPORTLIB -O1 -MD -Zi -DNDEBUG -DVERSION=\"0.04\" -DXS_VERSION=\"0.04\" dllsrc\ext\Win32CORE.c link -dll -def:perldll.def -base:0x28000000 -out:perl518.dll Win32CORE.obj -nologo -nodefaultlib -debug -opt:ref,icf -machine:x86 "/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'" -DELAYLOAD:ws2_32.dll delayimp.lib oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib av.obj deb.obj doio.obj doop.obj dump.obj globals.obj gv.obj mro.obj hv.obj locale.obj keywords.obj mathoms.obj mg.obj numeric.obj op.obj pad.obj perl.obj perlapi.obj perly.obj pp.obj pp_ctl.obj pp_hot.obj pp_pack.obj pp_sort.obj pp_sys.obj reentr.obj regcomp.obj regexec.obj run.obj scope.obj sv.obj taint.obj toke.obj universal.obj utf8.obj util.obj perllib.obj perlio.obj win32.obj win32sck.obj win32thread.obj fcrypt.obj win32io.obj DynaLoader.obj if exist perl518.dll.manifest mt -nologo -manifest perl518.dll.manifest -outputresource:perl518.dll;2 && if exist perl518.dll.manifest del perl518.dll.manifest pause