1README.zxid-win32
2#################
3<<cvsid: $Id: README.zxid-win32,v 1.3 2009-10-16 13:36:33 sampo Exp $>>
4<<author: Sampo Kellomaki (sampo@symlabs.com)>>
5
6As of version 0.11, January 2007, the Windows port is experimental.
7
8Only well researched questions, please.
9
10Right now the following has been accomplished
11
121. Compiles cleanly (xmingw cross compile)
132. CGI executables such as zxid and zxidhlo are produced (but not tested)
143. zxid.dll is produced
154. zxidjni.dll is produced
16
17*Todo*
18
19* Call zxid.dll from C# (non COM route)
20* Make zxid.dll into COM object and call it from C#; try
21
22    make csharpzxid TARGET=mingw
23
24* Test and debug that the zxid_simple() API really works on Windows
25
261 Building
27==========
28
29Current approach is to use the MinGW environment. Cross compilation
30on Linux host and MinGW target is best tested. Native compile
31with MinGW may work, but author is not able to test this combination.
32Nobody has tried compilation using Visual C, reports welcome.
33
34Generally you would proceed as follows
35
36  make default zxid.dll TARGET=xmingw   # Cross compile
37
38or
39
40  make default zxid.dll TARGET=mingw    # Native compile
41
42There is no make install, thus you will have to manually
43put things in right places and create /var/zxid directory
44hierarchy (what would be appropriate place for this in Windows?)
45
46ZXID depends on libcurl, openssl, and zlib. For best results
47you should compile these yourself and link them statically into
48the binaries and dll. It may be possible to use binaries
49from other sources (such as doenload sites of the respective
50projects), but this has not been tested. Cygwin packaged
51versions of these binaries are reported to work.
52
532 Binary distribution
54=====================
55
56I distribute an experimental binary package. You can find
57it in http://zxid.org/zxid-0.34-win32-bin.zip (substitute release number).
58
59It was cross compiled and probably works on Windows 2000. I do not have
60resources to test more widely.
61
622 Calling ZXID from C#
63======================
64
65<<code:
66using System;
67using System.Collections.Generic;
68using System.Text;
69using System.Runtime.InteropServices;
70
71namespace HelloZXID
72{
73    class Program
74    {
75        [DllImport("zxid.dll")]
76        static extern int zxid_version();
77
78        static void Main(string[] args)
79        {
80            int a = zxid_version();
81            Console.WriteLine("ZXID version is --- " + a.ToString());
82            Console.ReadLine();
83        }
84    }
85}
86>>
87
88<<EOF: >>
89
90COM
91===
92
93regsvr32 (register the DLL as COM)
94
95The DLL should have function called
96
97  DllRegisterServer()
98
99C# Calling
100==========
101
102* Turning code "unsafe"
103* pinvoke
104
105
106-----
107
108/apps/gcc/mingw/bin/i586-pc-mingw32-gcc -g -fmessage-length=0 -Wno-unused-label -Wno-unknown-pragmas -fno-strict-aliasing  -mno-cygwin -DUSE_ZXID -DDISA_MINI_HTTPD_BLOAT -DUSE_CURL -DUSE_OPENSSL -DUSE_PTHREAD -pthread -DZXID_LIBNAME='" libe2eta ix86-32 (sampo@synergetics.be)"' -DZXID_CONF_PATH='"/var/zxid/zxid.conf"' -DUSE_AKBOX_FN=1 -DMINGW -DUSE_LOCK=dummy_no_flock -DCURL_STATICLIB -D_REENTRANT -DDEBUG -DMUTEX_DEBUG=1 -I. -I/home/sampo/zxid -I/apps/gcc/mingw/sysroot/include -I/apps/gcc/mingw/sysroot/include -I/apps/include -I/usr/include/apache2 -I/usr/include/apr-1.0   -c -o zxpw.o zxpw.c
109i586-pc-mingw32-gcc: unrecognized option `-pthread'
110In file included from /apps/include/curl/curl.h:34,
111                 from zxid.h:36,
112                 from zxpw.c:33:
113/apps/include/curl/curlbuild.h:152:26: sys/socket.h: No such file or directory
114In file included from /apps/include/curl/curl.h:34,
115                 from zxid.h:36,
116                 from zxpw.c:33:
117/apps/include/curl/curlbuild.h:165: error: syntax error before "curl_socklen_t"
118/apps/include/curl/curlbuild.h:165: warning: data definition has no type or storage class
119make: *** [zxpw.o] Error 1
120
121# fix: remove -shared
122
123/apps/gcc/mingw/bin/i586-pc-mingw32-gcc -c -o zxidjava/zxid_wrap.o -I /usr/lib/jvm/java-6-openjdk/include -I/usr/lib/jvm/java-6-openjdk/include/linux -g -fmessage-length=0 -Wno-unused-label -Wno-unknown-pragmas -fno-strict-aliasing -mno-cygwin -DUSE_ZXID -DDISA_MINI_HTTPD_BLOAT -DUSE_CURL -DUSE_OPENSSL -DUSE_PTHREAD -pthread -DZXID_LIBNAME='" libe2eta ix86-32 (sampo@synergetics.be)"' -DZXID_CONF_PATH='"/var/zxid/zxid.conf"' -DUSE_AKBOX_FN=1 -DMINGW -DUSE_LOCK=dummy_no_flock -DCURL_STATICLIB -D_REENTRANT -DDEBUG -DMUTEX_DEBUG=1 -I. -I/home/sampo/zxid -I/apps/gcc/mingw/sysroot/include -I/apps/gcc/mingw/sysroot/include -I/apps/gcc/mingw/sysroot/include -I/apps/gcc/mingw/sysroot/include -I/apps/gcc/mingw/sysroot/srclib/apr-util/include zxidjava/zxid_wrap.c
124
125i586-pc-mingw32-gcc: unrecognized option `-pthread'
126zxidjava/zxid_wrap.c: In function `Java_zxidjava_zxidjniJNI_zxid_1bus_1url_1fd_1set':
127zxidjava/zxid_wrap.c:14851: warning: assignment makes pointer from integer without a cast
128
129/apps/gcc/mingw/bin/i586-pc-mingw32-gcc  -o zxidjava/zxidjni.dll -Wl,--add-stdcall-alias -shared --export-all-symbols -Wl,-whole-archive -Wl,-no-undefined -Wl,--enable-runtime-pseudo-reloc -Wl,--allow-multiple-definition zxidjava/zxid_wrap.o -L. -lzxid -mconsole -L/apps/gcc/mingw/sysroot/lib -L/apps/gcc/mingw/sysroot/lib -lcurl -lssl -lcrypto -lz -lwinmm -lwsock32 -lgdi32 -lkernel32 -Wl,-no-whole-archive
130
131zxidjava/zxid_wrap.o: In function `Java_zxidjava_zxidjniJNI_zx_1str_1n_1get':/home/sampo/zxid/zxidjava/zxid_wrap.c:1276: undefined reference to `pthread_self'
132zxidjava/zxid_wrap.o: In function `Java_zxidjava_zxidjniJNI_new_1zx_1str':/home/sampo/zxid/zxidjava/zxid_wrap.c:1394: undefined reference to `pthread_self'
133zxidjava/zxid_wrap.o: In function `Java_zxidjava_zxidjniJNI_zx_1attr_1s_1g_1get':/home/sampo/zxid/zxidjava/zxid_wrap.c:1446: undefined reference to `pthread_self'
134zxidjava/zxid_wrap.o: In function `Java_zxidjava_zxidjniJNI_zx_1elem_1s_1g_1get':/home/sampo/zxid/zxidjava/zxid_wrap.c:1600: undefined reference to `pthread_self'
135zxidjava/zxid_wrap.o: In function `Java_zxidjava_zxidjniJNI_zx_1ref_1str':/home/sampo/zxid/zxidjava/zxid_wrap.c:2058: undefined reference to `pthread_self'
136zxidjava/zxid_wrap.o:/home/sampo/zxid/zxidjava/zxid_wrap.c:2098: more undefined references to `pthread_self' follow
137make: *** [zxidjava/zxidjni.dll] Error 1
138