caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Win32 library
@ 2007-06-15 20:48 Christophe TROESTLER
  2007-06-15 21:19 ` [Caml-list] " Christophe TROESTLER
  2007-06-16  7:43 ` Dmitry Bely
  0 siblings, 2 replies; 3+ messages in thread
From: Christophe TROESTLER @ 2007-06-15 20:48 UTC (permalink / raw)
  To: O'Caml Mailing List

[-- Attachment #1: Type: Text/Plain, Size: 714 bytes --]

Hi,

I am fighting with the compilation of ocamlodbc under windows (code
here: http://cvs.gna.org/cvsweb/ocamlodbc/?cvsroot=ocamlodbc).  The
problem is that

  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

returns the error:

  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

(complete report attached).  What I find strange is that all other
caml symbols are resolved (and ocamlrun.lib matches for
_caml_local_roots).  What did I do wrong ?

Cheers,
ChriS


[-- Attachment #2: report.log --]
[-- Type: Text/Plain, Size: 16597 bytes --]

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 \x7focamlrun_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 \x7fODBC32_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 \x7fMSVCR80_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 \x7fKERNEL32_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 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Caml-list] Win32 library
  2007-06-15 20:48 Win32 library Christophe TROESTLER
@ 2007-06-15 21:19 ` Christophe TROESTLER
  2007-06-16  7:43 ` Dmitry Bely
  1 sibling, 0 replies; 3+ messages in thread
From: Christophe TROESTLER @ 2007-06-15 21:19 UTC (permalink / raw)
  To: O'Caml Mailing List

Replying to myself:

On Fri, 15 Jun 2007, Christophe TROESTLER <Christophe.Troestler+ocaml@umh.ac.be> wrote:
> 
>   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

I "forgot" to define CAML_DLL in

  cl /nologo /Ox /MD /DWIN32 /DCAML_DLL -I "%OCAMLLIB%" -c ocaml_odbc_c.c

Hopefully this will help other people. :)

ChriS


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Caml-list] Win32 library
  2007-06-15 20:48 Win32 library Christophe TROESTLER
  2007-06-15 21:19 ` [Caml-list] " Christophe TROESTLER
@ 2007-06-16  7:43 ` Dmitry Bely
  1 sibling, 0 replies; 3+ messages in thread
From: Dmitry Bely @ 2007-06-16  7:43 UTC (permalink / raw)
  To: Caml List

[-- Attachment #1: Type: text/plain, Size: 1000 bytes --]

On 6/16/07, Christophe TROESTLER <Christophe.Troestler+ocaml@umh.ac.be> wrote:
> Hi,
>
> I am fighting with the compilation of ocamlodbc under windows (code
> here: http://cvs.gna.org/cvsweb/ocamlodbc/?cvsroot=ocamlodbc).  The
> problem is
[...]
> (complete report attached).  What I find strange is that all other
> caml symbols are resolved (and ocamlrun.lib matches for
> _caml_local_roots).

Nothing strange: caml_local_roots is a variable (not a function) so it
exported differently in case of byte/native code Ocaml runtime
(dynamic/static library respectively). So you should compile your C
source files with  different compiler options, not just copy .obj
files as the library author does. In other words, INSTALL_WIN32.bat is
broken (some time ago I also run into that). Here are my changes
(.diff is attached):

- Fix compilation problems
- Use ODBC2
- DLL support for the byte code

- Dmitry Bely

P.S. In fact I finally wrote a couple-line Omakefile and forgot about
all that problems :)

[-- Attachment #2: ocamlodbc.diff --]
[-- Type: application/octet-stream, Size: 1960 bytes --]

Index: INSTALL_WIN32.bat
===================================================================
RCS file: D:\Work\cvsroot/config/ocamlodbc/INSTALL_WIN32.bat,v
retrieving revision 1.1
retrieving revision 1.3
diff -u -r1.1 -r1.3
--- INSTALL_WIN32.bat	14 Sep 2006 13:51:31 -0000	1.1
+++ INSTALL_WIN32.bat	20 Sep 2006 16:37:10 -0000	1.3
@@ -7,17 +7,21 @@
 @echo -----------------------------------------
 
 @echo  Compile the external functions and create the dll
-cl /nologo /Ox /MD /DWIN32 -I "%OCAMLLIB%"\caml -c ocaml_odbc_c.c
-move ocaml_odbc_c.obj ocaml_odbc_c.d.obj
-link /nologo /dll /out:dllocamlodbc.dll /def:ocamlodbc.DEF  ocaml_odbc_c.d.obj "%OCAMLLIB%"\ocamlrun.lib  libodbc32.lib
+cl /nologo /Ox /MT /DWIN32 /DODBC2 -I "%OCAMLLIB%"\caml -c ocaml_odbc_c.c
+lib /nologo /out:libocamlodbc.lib ocaml_odbc_c.obj
+copy libocamlodbc.lib "%OCAMLLIB%"
+cl /nologo /Ox /MD /DCAML_DLL /DWIN32 /DODBC2 -I "%OCAMLLIB%"\caml -c ocaml_odbc_c.c -Foocaml_odbc_c.d.obj
+link /nologo /dll /out:dllocamlodbc.dll /def:ocamlodbc.DEF  ocaml_odbc_c.d.obj "%OCAMLLIB%"\ocamlrun.lib odbc32.lib
 copy dllocamlodbc.dll "%OCAMLLIB%"\stublibs
 
 @echo  Make a native code library
-ocamlopt -a -o ocamlodbc.cmxa ocaml_odbc.ml ocamlodbc.mli ocamlodbc.ml ocaml_odbc_c.obj -cclib -lodbc32
-copy ocamlodbc.cmxa "%OCAMLLIB%"
+ocamlopt -a -o ocamlodbc.cmxa ocaml_odbc.ml ocamlodbc.mli ocamlodbc.ml ocaml_odbc_c.obj -cclib odbc32.lib
+copy ocamlodbc.mli "%OCAMLLIB%"
 copy ocamlodbc.cmi "%OCAMLLIB%"
+copy ocamlodbc.cmxa "%OCAMLLIB%"
 
-@echo  Make a custom runtime library
-ocamlc -a -o ocamlodbc.cma -custom ocaml_odbc.ml ocamlodbc.mli ocamlodbc.ml ocaml_odbc_c.obj -dllib -locamlodbc  -cclib -lodbc32
-copy ocamlodbc.cma "%OCAMLLIB%"
+@echo  Make a byte code DLL
+ocamlc -a -o ocamlodbc.cma ocaml_odbc.ml ocamlodbc.mli ocamlodbc.ml -dllib -locamlodbc
+copy ocamlodbc.mli "%OCAMLLIB%"
 copy ocamlodbc.cmi "%OCAMLLIB%"
+copy ocamlodbc.cma "%OCAMLLIB%"

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2007-06-16  7:43 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-06-15 20:48 Win32 library Christophe TROESTLER
2007-06-15 21:19 ` [Caml-list] " Christophe TROESTLER
2007-06-16  7:43 ` Dmitry Bely

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).