Products > Ch SDK
Ch SDK is included in Ch Standard, Student, and Professional Editions.

Ch SDK allows C/C++ scripts (Ch scripts) to interface C/C++ binary libraries. It allows Ch scripts to access global variables or call functions in compiled C/C++ libraries such as static libraries, shared libraries or Dynamically Linked Libraries (DLL). Ch scripts can callback Ch functions from C/C++ libraries. There is no distinction between the interpreted and compiled code.

Using Ch SDK to build dynamically loaded libraries
to interface C/C++ scripts with C/C++ libraries.

If you want to invoke Ch scripts, functions, or variables from C/C++ binary applications at the runtime, please try Embedded Ch.

Ch SDK requires neither any modification of your C/C++ source code and libraries, nor re-compilation of your applications and libraries. It enables you to have a powerful C interpreter to control your systems and applications across different platforms. Your binary modules can readily be executed interpretively and shared with other users with Ch SDK. It creates a greater benefit for code reuse.

Another advantage of using Ch SDK is that you don't need to recompile even if the binary dynamically linked libraries are updated. Once you created a Ch package or toolkit for the library, you do not need to update the Ch package or toolkit if the interface and function prototypes are not modified, even though you have modified the internal code of functions in the library. You can simply overwrite the existing .DLL or .so libraries. The Ch package or toolkit can automatically access the modified library. It saves your time for maintenance of Ch packages or toolkits.

You will find Ch SDK an ideal solution in the following situations:

  • You want to have your large existing C/C++ library accessed from Ch scripts for rapid prototyping.
  • You want to make Ch scripts run faster, and make the frequently called underlying C/C++ functions a binary library.
  • You want to protect your intellectual property and source code from being revealed.
Ch SDK allows you to enjoy a truly powerful scripting language environment to interface with C/C++ libraries. Ch SDK can handle complicated C functions such as pointer to function with different argument, variable argument list, variable length arrays (VLAs), which are difficult or impossible to handle by other scripting languages.

Typically, Ch SDK can access the following components in C/C++ libraries:

  • Regular C functions.
  • C functions with arguments of pointer to function, and the pointer to function can either have argument or no argument.
  • C functions with arguments of pointer to function and the pointer to function may have different arguments which are of different data types.
  • C functions with arguments of class, pointer to class and pointer to pointer of class.
  • C functions with return values of pointer to function, and the pointer to function can either have argument or no argument.
  • C functions with variable argument lists.
  • Complex numbers.
  • Variable length arrays.
  • Struct, union, enum data types.
  • Class in C++.
  • Global variables.
Ch SDK is easy to use and yet powerful. It provides a utility to generate wrappers for Ch to interface your C/C++ libraries automatically. You may not need to write code to have your most job done. To handle complicated cases such as pointer to functions, Variable Length Arrays(VLAs) and classes in C++, Ch SDK ships with easy to use APIs, many templates and examples for you to get started quickly to write wrapper functions.

Ch SDK also provides you with extended functionalities in interfacing with C/C++ libraries. For example, you can take advantage of the string type and computational array to interface with C/C++ libraries. It will make your Ch script easy to use without losing the power of C/C++ libraries.

It is easy to cause the memory leak for passing the argument to get the returned value, or call a function with a return value that is allocated in your C/C++ wrapper. Ch provides a convenient memory management utilty for users to have a good control and track for the memory allocation and deallocation. Ch SDK has been effectively used to interface with industry standard C libraries such as POSIX, C LAPACK, X/Motif, Win32, GTK+, OpenGL, ODBC, OpenCV, NI-DAQ, NI-Motion, etc. Its power and flexibility have been demonstrated.

Please click the link to download a simple example. This demo example is also available at CHHOME/toolkit/demos/SDK/chapters/runc2chf_dll/chf/ directory when Ch is installed.

An example of using Ch SDK is Ch K8055 Package. It contains the source code for building Ch interface to the Velleman USB interface board K8055. In this example, a simplified header file k8055d_c.h is used to generate Ch function files *.chf and dynamical loaded library libk8055d_c.dl.

Another example of using Ch SDK is Ch PNG Package. It contains the source code for building cross platform Ch interface to the PNG library. In this example, the Ch function files and dynamical loaded library are generated from the original header file png.h directly.