DyLibSymbol

Returns the address of a function or variable in a dll

Syntax
	KeyPgDeclareDeclare KeyPgFunctionFunction DyLibSymbol ( KeyPgByvalByVal libhandle KeyPgAsAs KeyPgAnyAny KeyPgPtrPtr, KeyPgByrefByRef symbol 
	KeyPgAsAs KeyPgStringString ) KeyPgAsAs KeyPgAnyAny KeyPgPtrPtr
	KeyPgDeclareDeclare KeyPgFunctionFunction DyLibSymbol ( KeyPgByvalByVal libhandle KeyPgAsAs KeyPgAnyAny KeyPgPtrPtr, KeyPgByvalByVal symbol 
	KeyPgAsAs KeyPgShortShort ) KeyPgAsAs KeyPgAnyAny KeyPgPtrPtr

Usage
	result = DyLibSymbol ( libhandle, symbol )

Parameters
	libhandle
		The KeyPgAnyAny KeyPgPtrPtr handle of a DLL returned by KeyPgDylibloadDyLibLoad
	symbol
		A KeyPgStringString containing name of the function, or variable in the library 
		to return the address of.  In Windows only, can also be a KeyPgShortShort 
		containing the ordinal of the function/variable.

Return Value
	A KeyPgPtrPointer to the function or variable in the library.

	If the function fails, the return value is 0.

Description
	DyLibSymbol returns a pointer to the variable or function named symbol , 
	in the dll pointed by libhandle. libhandle is obtained by loading the 
	dll with KeyPgDylibloadDyLibLoad. The symbol must have been KeyPgExportExported in the dll.
	If libhandle is 0, the symbol is searched in the current executable or 
	dll.

	If using KeyPgCdeclcdecl functions, only the name of the procedure needs to be 
	specified. If dynamically linking to a function created using STDCALL 
	(default in windows), then the function must be decorated. To decorate a 
	function, use its name, '@', then the number of bytes passed as 
	arguments. For instance if the function FOO takes 3 integer arguments, 
	the decorated function would be 'FOO@12'. Remember, without an explicit 
	KeyPgAliasAlias, the procedure name will be uppercase.

	If linking to a dll created in Visual C++(tm), decoration need not be 
	used. For GCC, decoration is needed.

	Note: The dylibsymbol, if failing, will attempt to automatically 
	decorate the procedure, from @0 to @256, in 4 byte increments.

Example
	See the dynamic loading example on the ProPgSharedLibrariesShared Libraries page.

Platform Differences
	* Ordinals are not supported on Linux, 0 is always returned.
	* Ordinals are not supported on DOS, 0 is always returned.
	* Windows does not support DyLibSymbol use with variables (only with 
	  procedures).
	* DOS: see specific ProPgSharedLibrariesDOSShared Libraries - DOS page

Dialect Differences
	* Not available in the CompilerOptlang-lang qb dialect unless referenced with the 
	  alias __Dylibsymbol.

Differences from QB
	* New to FreeBASIC

See also
	* KeyPgDylibloadDyLibLoad
	* KeyPgDylibfreeDyLibFree
	* KeyPgExportExport

