SILC Toolkit FAQ
 
 
1. SILC Toolkit Questions
1.1 What is SILC Toolkit?
1.2 Is the SILC Toolkit Reference Manual Available?
1.3 How do I compile the Toolkit on Unix?
1.4 How do I compile the Toolkit on Win32?
1.5 Does the Toolkit package include any sample code?
1.6 Can I use SILC Toolkit from C++ application?
1.7 I get "undefined reference" error to silc_xxx in my C++ application
1.8 What header files I should include in my application?
1.9 How can I compile only the libraries in the Toolkit?
1.10 Why is the SILC Client and SILC Server distributed in SILC Toolkit?
1.11 I need help with the Toolkit, where can I get more help?



1. SILC Toolkit Questions
 
Q: What is SILC Toolkit?
A: SILC Toolkit is a package intended for software developers who would like to develope their own SILC based applications or help in the development of the SILC. The Toolkit includes SILC Protocol Core library, SILC Crypto library, SILC Key Exchange (SKE) library, SILC Math library, SILC Modules (SIM) library, SILC Utility library, SILC Client library and few other libraries.
 
Q: Is the SILC Toolkit Reference Manual Available?
A: Yes, the reference manual which provides full reference to the libraries and programming guide is available in the SILC Toolkit package as HTML package. The online version of the manual is also available on the silcnet.org website at the Software Manuals page.
 
Q: How do I compile the Toolkit on Unix?
A: You should read the INSTALL file from the package and follow its instructions. The compilation on Unix is as simple as compiling any other SILC package. Give, `./configure' command and then `make' command. You should view the './configure --help' output to see important configuration switches. Usually programmers want to give --enable-debug to turn on the run-time debugging capabilities.
 
Q: How do I compile the Toolkit on Win32?
A: We have prepared instructions to compile the Toolkit on Win32 in the Toolkit package. Please, read the README.WIN32 file from the package for detailed instructions how to compile the Toolkit for Cygwin, MinGW and native Win32 systems. We have also prepared ready MSVC++ Workspace files in the win32/ directory in the package that will compile automatically the Toolkit. Note that, officially we support SILC Toolkit only compiled with MSVC++ on Win32.
 
Q: Does the Toolkit package include any sample code?
A: Yes, naturally. The tutorial/ directoryo includes very simple tutorials to get started with the SILC Toolkit. The silcer/ directory includes a simple GUI client based on GTK--.
 
Q: Can I use SILC Toolkit from C++ application?
A: Yes, of course. You however must be careful when you mix C and C++ code. The SILC Toolkit is pure ANSI C and there are some issues when calling C routines from C++ code. Remember to include only "silcincludes.h" and "silcclient.h" (and "silversion.h") header files from the Toolkit. Any other header file will not work with C++ application, and you will end up having problems at linking time. See also these outside links for more information C++ FAQ Lite and Tech Talk About C++.
 
Q: I get "undefined reference" error to silc_xxx in my C++ application
A: This is common problem when mixing C and C++ code. The linker will treat the C functions and C++ functions differently, and if the compiler does not know that a call you made is for C routine, you will get this error. Make sure that your application is not including any other header file from the Toolkit but "silcincludes.h" and "silcclient.h". Any other header is not suitable to be included directly from C++ code, and may cause this problem. See also these outside links for more information C++ FAQ Lite and Tech Talk About C++.
 
Q: What header files I should include in my application?
A: To avoid problems mentioned in previous questions you should include only the "silcincludes.h", "silcclient.h" and if needed "silcversion.h" header files in your C++ application. Any other header file when included directly to C++ code may cause problems at both compile and linking time. For C applications there are no such restrictions, however it is strongly recommended to only include these headers.
 
Q: How can I compile only the libraries in the Toolkit?
A: You can compile only the libraries by giving --without-irssi and --without-silcd to the ./configure script. When given only the libraries inside lib/ subdirectory will be compiled.
 
Q: Why is the SILC Client and SILC Server distributed in SILC Toolkit?
A: They are not actually. The SILC Client and SILC Server code is distributed in SILC Toolkit merely as example code for how to use the SILC Toolkit. The SILC Client and SILC Server distirbutions may include different code than what is found in the SILC Toolkit distribution. You should not use the client and server found in SILC Toolkit in production environment, but treat them merely as example applications.
 
Q: I need help with the Toolkit, where can I get more help?
A: Often developers need help with a new toolkit. The best place to get help is to email your question to the silc-devel mailing list. Your email will reach developers who can most likely provide you with an answer. Sometimes developres go online to SILCNet and ask help on 'silc' channel. This is not recommended since the developers might not be present or are otherwise busy and cannot give you an answer. Practice has shown that often you will get better answer quicker via email.