Lifetime example

Below some example of a simple program (WinApi), some code ommited.

//scdll.h header because this example uses dynamic dll loading
#include "../sc/scdll.h"

...
SCINITPROC      SCInit = NULL;
SCDEINITPROC    SCDeinit = NULL;
SCGETENVPROC    SCGetEnv = NULL;
HMODULE         libHandle = NULL;


int main(int argc, char* argv[])
{
	//opening dll
	libHandle = LoadLibrary("../lib/scdll.dll");
	if(!libHandle)
		return -1;

	//entry point procedures, must be always initalized
	SCInit = (SCINITPROC) GetProcAddress(libHandle, "SCInit");
	SCDeinit = (SCDEINITPROC) GetProcAddress(libHandle, "SCDeinit");
	SCGetEnv = (SCGETENVPROC) GetProcAddress(libHandle, "SCGetEnv");


	if(!SCInit || !SCDeinit || !SCGetEnv)
		return -1;

	//using default functions from auxiliary header, they write formatted error 
	//to default output
	ISCEnvDesc envDesc;
	envDesc.compileErrorCallback = SCAUXDefaultCompileErrorCallback;
	envDesc.envErrorCallback = SCAUXDefaultEnvErrorCallback;
	

	//Calling SCInit to get environment object
	ISCEnv *env = SCInit(&envDesc);
	if(!env)
		return -1;

  //use library
  ...
  	
	//clearing environment
	SCDeinit();
	
  //free dll 
	FreeLibrary(libHandle);
	
	return 0;
}

See example ex_dllInit to see how to use dll.