ocamlODBC installation script for Windows Clement Capel Oct 2003 ----------------------------------------- Assumes VC++ installed variables set for "cl" and "link" ----------------------------------------- --- Compile the external functions and create the dll --- ocamlodbc-2.12>cl /nologo /Ox /MD /DWIN32 -I "C:\Program Files\Objective Caml\lib" -c ocaml_odbc_c.c ocaml_odbc_c.c ocamlodbc-2.12>move ocaml_odbc_c.obj ocaml_odbc_c.d.obj 1>NUL ocamlodbc-2.12>link /verbose /nologo /dll /out:dllocamlodbc.dll /def:ocamlodbc.DEF ocaml_odbc_c.d.obj /LIBPATH:"C:\Program Files\Objective Caml\lib" ocamlrun.lib odbc32.lib Starting pass 1 Processed /DEFAULTLIB:uuid.lib Processed /DEFAULTLIB:MSVCRT Processed /DEFAULTLIB:OLDNAMES Searching libraries Searching C:\Program Files\Objective Caml\lib\ocamlrun.lib: Found _caml_raise_out_of_memory Referenced in ocaml_odbc_c.d.obj Loaded ocamlrun.lib(ocamlrun.dll) Found _caml_alloc_tuple Referenced in ocaml_odbc_c.d.obj Loaded ocamlrun.lib(ocamlrun.dll) Found _caml_modify Referenced in ocaml_odbc_c.d.obj Loaded ocamlrun.lib(ocamlrun.dll) Found _caml_copy_string Referenced in ocaml_odbc_c.d.obj Loaded ocamlrun.lib(ocamlrun.dll) Found _caml_failwith Referenced in ocaml_odbc_c.d.obj Loaded ocamlrun.lib(ocamlrun.dll) Found _caml_alloc Referenced in ocaml_odbc_c.d.obj Loaded ocamlrun.lib(ocamlrun.dll) Found __IMPORT_DESCRIPTOR_ocamlrun Referenced in ocamlrun.lib(ocamlrun.dll) Referenced in ocamlrun.lib(ocamlrun.dll) Referenced in ocamlrun.lib(ocamlrun.dll) Referenced in ocamlrun.lib(ocamlrun.dll) Referenced in ocamlrun.lib(ocamlrun.dll) Referenced in ocamlrun.lib(ocamlrun.dll) Loaded ocamlrun.lib(ocamlrun.dll) Found __NULL_IMPORT_DESCRIPTOR Referenced in ocamlrun.lib(ocamlrun.dll) Loaded ocamlrun.lib(ocamlrun.dll) Found ocamlrun_NULL_THUNK_DATA Referenced in ocamlrun.lib(ocamlrun.dll) Loaded ocamlrun.lib(ocamlrun.dll) Searching C:\Program Files\Microsoft Platform SDK\Lib\odbc32.lib: Found _SQLConnect@28 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLAllocConnect@8 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLAllocEnv@4 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLFreeEnv@4 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLFreeConnect@4 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLDisconnect@4 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLTransact@12 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLFreeStmt@8 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLDescribeCol@36 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLFetch@4 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLError@32 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLGetDiagRec@32 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLDriverConnect@32 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLAllocHandle@12 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLBindCol@24 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLColAttributes@28 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLNumResultCols@8 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLRowCount@8 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLExecute@4 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLPrepare@12 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found _SQLAllocStmt@8 Referenced in ocaml_odbc_c.d.obj Loaded odbc32.lib(ODBC32.dll) Found __IMPORT_DESCRIPTOR_ODBC32 Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Referenced in odbc32.lib(ODBC32.dll) Loaded odbc32.lib(ODBC32.dll) Found ODBC32_NULL_THUNK_DATA Referenced in odbc32.lib(ODBC32.dll) Loaded odbc32.lib(ODBC32.dll) Searching C:\Program Files\Microsoft Platform SDK\Lib\uuid.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\LIB\MSVCRT.lib: Found __imp__malloc Referenced in ocaml_odbc_c.d.obj Loaded MSVCRT.lib(MSVCR80.dll) Found __imp__free Referenced in ocaml_odbc_c.d.obj Loaded MSVCRT.lib(MSVCR80.dll) Found ___security_cookie Referenced in ocaml_odbc_c.d.obj Loaded MSVCRT.lib(gs_cookie.obj) Found @__security_check_cookie@4 Referenced in ocaml_odbc_c.d.obj Loaded MSVCRT.lib(secchk.obj) Found __chkstk Referenced in ocaml_odbc_c.d.obj Loaded MSVCRT.lib(chkstk.obj) Found __imp__fflush Referenced in ocaml_odbc_c.d.obj Loaded MSVCRT.lib(MSVCR80.dll) Found __imp__fprintf Referenced in ocaml_odbc_c.d.obj Loaded MSVCRT.lib(MSVCR80.dll) Found __imp____iob_func Referenced in ocaml_odbc_c.d.obj Loaded MSVCRT.lib(MSVCR80.dll) Found __imp__printf Referenced in ocaml_odbc_c.d.obj Loaded MSVCRT.lib(MSVCR80.dll) Found __DllMainCRTStartup@12 Loaded MSVCRT.lib(crtdll.obj) Found __IMPORT_DESCRIPTOR_MSVCR80 Referenced in MSVCRT.lib(MSVCR80.dll) Referenced in MSVCRT.lib(MSVCR80.dll) Referenced in MSVCRT.lib(MSVCR80.dll) Referenced in MSVCRT.lib(MSVCR80.dll) Referenced in MSVCRT.lib(MSVCR80.dll) Referenced in MSVCRT.lib(MSVCR80.dll) Loaded MSVCRT.lib(MSVCR80.dll) Found ___report_gsfailure Referenced in MSVCRT.lib(secchk.obj) Loaded MSVCRT.lib(gs_report.obj) Found ___clean_type_info_names Referenced in MSVCRT.lib(crtdll.obj) Loaded MSVCRT.lib(tncleanup.obj) Found _atexit Referenced in MSVCRT.lib(crtdll.obj) Loaded MSVCRT.lib(atonexit.obj) Found __RTC_Terminate Referenced in MSVCRT.lib(crtdll.obj) Loaded MSVCRT.lib(initsect.obj) Found __imp___encode_pointer Referenced in MSVCRT.lib(crtdll.obj) Referenced in MSVCRT.lib(atonexit.obj) Loaded MSVCRT.lib(MSVCR80.dll) Found __imp___malloc_crt Referenced in MSVCRT.lib(crtdll.obj) Loaded MSVCRT.lib(MSVCR80.dll) Found __imp___encoded_null Referenced in MSVCRT.lib(crtdll.obj) Loaded MSVCRT.lib(MSVCR80.dll) Found __imp___decode_pointer Referenced in MSVCRT.lib(crtdll.obj) Referenced in MSVCRT.lib(atonexit.obj) Loaded MSVCRT.lib(MSVCR80.dll) Found __IsNonwritableInCurrentImage Referenced in MSVCRT.lib(crtdll.obj) Loaded MSVCRT.lib(pesect.obj) Found __initterm Referenced in MSVCRT.lib(crtdll.obj) Loaded MSVCRT.lib(MSVCR80.dll) Found ___xc_a Referenced in MSVCRT.lib(crtdll.obj) Loaded MSVCRT.lib(cinitexe.obj) Processed /DEFAULTLIB:kernel32.lib Processed /DISALLOWLIB:libc.lib Processed /DISALLOWLIB:libcd.lib Processed /DISALLOWLIB:libcmt.lib Processed /DISALLOWLIB:libcmtd.lib Processed /DISALLOWLIB:msvcrtd.lib Found __initterm_e Referenced in MSVCRT.lib(crtdll.obj) Loaded MSVCRT.lib(MSVCR80.dll) Found __amsg_exit Referenced in MSVCRT.lib(crtdll.obj) Loaded MSVCRT.lib(MSVCR80.dll) Found ___native_startup_state Referenced in MSVCRT.lib(crtdll.obj) Loaded MSVCRT.lib(natstart.obj) Found __adjust_fdiv Referenced in MSVCRT.lib(crtdll.obj) Loaded MSVCRT.lib(adjustfd.obj) Found __imp___adjust_fdiv Referenced in MSVCRT.lib(crtdll.obj) Loaded MSVCRT.lib(MSVCR80.dll) Found ___CppXcptFilter Referenced in MSVCRT.lib(crtdll.obj) Loaded MSVCRT.lib(MSVCR80.dll) Found _DllMain@12 Referenced in MSVCRT.lib(crtdll.obj) Loaded MSVCRT.lib(dllmain.obj) Found __SEH_epilog4 Referenced in MSVCRT.lib(crtdll.obj) Referenced in MSVCRT.lib(atonexit.obj) Referenced in MSVCRT.lib(pesect.obj) Loaded MSVCRT.lib(sehprolg4.obj) Found __except_handler4 Referenced in MSVCRT.lib(crtdll.obj) Referenced in MSVCRT.lib(atonexit.obj) Referenced in MSVCRT.lib(pesect.obj) Referenced in MSVCRT.lib(sehprolg4.obj) Loaded MSVCRT.lib(chandler4gs.obj) Found ___security_init_cookie Referenced in MSVCRT.lib(crtdll.obj) Loaded MSVCRT.lib(gs_support.obj) Found MSVCR80_NULL_THUNK_DATA Referenced in MSVCRT.lib(MSVCR80.dll) Loaded MSVCRT.lib(MSVCR80.dll) Found __crt_debugger_hook Referenced in MSVCRT.lib(gs_report.obj) Loaded MSVCRT.lib(MSVCR80.dll) Found ___clean_type_info_names_internal Referenced in MSVCRT.lib(tncleanup.obj) Loaded MSVCRT.lib(MSVCR80.dll) Found __unlock Referenced in MSVCRT.lib(atonexit.obj) Loaded MSVCRT.lib(MSVCR80.dll) Found ___dllonexit Referenced in MSVCRT.lib(atonexit.obj) Loaded MSVCRT.lib(MSVCR80.dll) Found __lock Referenced in MSVCRT.lib(atonexit.obj) Loaded MSVCRT.lib(MSVCR80.dll) Found __imp___onexit Referenced in MSVCRT.lib(atonexit.obj) Loaded MSVCRT.lib(MSVCR80.dll) Found __except_handler4_common Referenced in MSVCRT.lib(chandler4gs.obj) Loaded MSVCRT.lib(MSVCR80.dll) Searching C:\Program Files\Microsoft Visual Studio 8\VC\LIB\OLDNAMES.lib: Searching C:\Program Files\Microsoft Platform SDK\Lib\kernel32.lib: Found __imp__InterlockedExchange@8 Referenced in MSVCRT.lib(crtdll.obj) Loaded kernel32.lib(KERNEL32.dll) Found __imp__Sleep@4 Referenced in MSVCRT.lib(crtdll.obj) Loaded kernel32.lib(KERNEL32.dll) Found __imp__InterlockedCompareExchange@12 Referenced in MSVCRT.lib(crtdll.obj) Loaded kernel32.lib(KERNEL32.dll) Found __imp__TerminateProcess@8 Referenced in MSVCRT.lib(gs_report.obj) Loaded kernel32.lib(KERNEL32.dll) Found __imp__GetCurrentProcess@0 Referenced in MSVCRT.lib(gs_report.obj) Loaded kernel32.lib(KERNEL32.dll) Found __imp__UnhandledExceptionFilter@4 Referenced in MSVCRT.lib(gs_report.obj) Loaded kernel32.lib(KERNEL32.dll) Found __imp__SetUnhandledExceptionFilter@4 Referenced in MSVCRT.lib(gs_report.obj) Loaded kernel32.lib(KERNEL32.dll) Found __imp__IsDebuggerPresent@0 Referenced in MSVCRT.lib(gs_report.obj) Loaded kernel32.lib(KERNEL32.dll) Found __imp__DisableThreadLibraryCalls@4 Referenced in MSVCRT.lib(dllmain.obj) Loaded kernel32.lib(KERNEL32.dll) Found __imp__QueryPerformanceCounter@4 Referenced in MSVCRT.lib(gs_support.obj) Loaded kernel32.lib(KERNEL32.dll) Found __imp__GetTickCount@0 Referenced in MSVCRT.lib(gs_support.obj) Loaded kernel32.lib(KERNEL32.dll) Found __imp__GetCurrentThreadId@0 Referenced in MSVCRT.lib(gs_support.obj) Loaded kernel32.lib(KERNEL32.dll) Found __imp__GetCurrentProcessId@0 Referenced in MSVCRT.lib(gs_support.obj) Loaded kernel32.lib(KERNEL32.dll) Found __imp__GetSystemTimeAsFileTime@4 Referenced in MSVCRT.lib(gs_support.obj) Loaded kernel32.lib(KERNEL32.dll) Found __IMPORT_DESCRIPTOR_KERNEL32 Referenced in kernel32.lib(KERNEL32.dll) Referenced in kernel32.lib(KERNEL32.dll) Referenced in kernel32.lib(KERNEL32.dll) Referenced in kernel32.lib(KERNEL32.dll) Referenced in kernel32.lib(KERNEL32.dll) Referenced in kernel32.lib(KERNEL32.dll) Referenced in kernel32.lib(KERNEL32.dll) Referenced in kernel32.lib(KERNEL32.dll) Referenced in kernel32.lib(KERNEL32.dll) Referenced in kernel32.lib(KERNEL32.dll) Referenced in kernel32.lib(KERNEL32.dll) Referenced in kernel32.lib(KERNEL32.dll) Referenced in kernel32.lib(KERNEL32.dll) Referenced in kernel32.lib(KERNEL32.dll) Loaded kernel32.lib(KERNEL32.dll) Found KERNEL32_NULL_THUNK_DATA Referenced in kernel32.lib(KERNEL32.dll) Loaded kernel32.lib(KERNEL32.dll) Searching C:\Program Files\Objective Caml\lib\ocamlrun.lib: Searching C:\Program Files\Microsoft Platform SDK\Lib\odbc32.lib: Searching C:\Program Files\Microsoft Platform SDK\Lib\uuid.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\LIB\MSVCRT.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\LIB\OLDNAMES.lib: Finished searching libraries Generating .exp file Creating library dllocamlodbc.lib and object dllocamlodbc.exp Finished generating .exp file Searching libraries Searching C:\Program Files\Objective Caml\lib\ocamlrun.lib: Searching C:\Program Files\Microsoft Platform SDK\Lib\odbc32.lib: Searching C:\Program Files\Microsoft Platform SDK\Lib\uuid.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\LIB\MSVCRT.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\LIB\OLDNAMES.lib: Searching C:\Program Files\Microsoft Platform SDK\Lib\kernel32.lib: Finished searching libraries Finished pass 1 Searching libraries Searching C:\Program Files\Objective Caml\lib\ocamlrun.lib: Searching C:\Program Files\Microsoft Platform SDK\Lib\odbc32.lib: Searching C:\Program Files\Microsoft Platform SDK\Lib\uuid.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\LIB\MSVCRT.lib: Found __load_config_used Loaded MSVCRT.lib(loadcfg.obj) Searching C:\Program Files\Microsoft Visual Studio 8\VC\LIB\OLDNAMES.lib: Searching C:\Program Files\Microsoft Platform SDK\Lib\kernel32.lib: Searching C:\Program Files\Objective Caml\lib\ocamlrun.lib: Searching C:\Program Files\Microsoft Platform SDK\Lib\odbc32.lib: Searching C:\Program Files\Microsoft Platform SDK\Lib\uuid.lib: Finished searching libraries ocaml_odbc_c.d.obj : error LNK2019: unresolved external symbol _caml_local_roots referenced in function _ocamlodbc_initDB_c dllocamlodbc.dll : fatal error LNK1120: 1 unresolved externals ocamlodbc-2.12>copy dllocamlodbc.dll "C:\Program Files\Objective Caml\lib"\stublibs 1>NUL --- --- Make a custom runtime library --- ocamlodbc-2.12>ocamlc -a -o ocamlodbc.cma -custom ocaml_odbc.ml ocamlodbc.mli ocamlodbc.ml ocaml_odbc_c.obj -dllib -locamlodbc -cclib -lodbc32 ocamlodbc-2.12>copy ocamlodbc.cma "C:\Program Files\Objective Caml\lib" 1>NUL ocamlodbc-2.12>copy ocamlodbc.cmi "C:\Program Files\Objective Caml\lib" 1>NUL --- --- Make a native code library --- ocamlodbc-2.12>ocamlopt -a -o ocamlodbc.cmxa ocaml_odbc.ml ocamlodbc.mli ocamlodbc.ml ocaml_odbc_c.obj -cclib -lodbc32 ocamlodbc-2.12>copy ocamlodbc.cmxa "C:\Program Files\Objective Caml\lib" 1>NUL ocamlodbc-2.12>copy ocamlodbc.cmi "C:\Program Files\Objective Caml\lib" 1>NUL