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