Support > General Discussions

Using dlls

(1/1)

roughbert:
Thus spake the Users Guide:

--- Quote ---You use/write a DECLARE SUB command if you developed an external module for ScriptBasic programs in C.
--- End quote ---
So if we have a dll and header using CDECL we can use it directly?

I'm thinking of the SQLite one in particular.

For example, if the header file contains:


--- Code: ---int sqlite3_open(
  const char *filename,   /* Database filename (UTF-8) */
  sqlite3 **ppDb          /* OUT: SQLite db handle */
);
--- End code ---

the first parameter is a pointer to a zero-terminated string and the second is a pointer to a 4-byte address containing a database handle.

What does our eqivalent Scriptbasic DECLARE statement look like?

Thanks,

Chris


Support:
Chris,

Here is the mysql.bas include file which defines the mysql::xxx function calls.


--- Code: ---module mysql

declare sub ::RealConnect alias "mys_real_connect" lib "mysql"
declare sub ::Connect alias "mys_config_connect" lib "mysql"
declare sub ::Close alias "mys_close" lib "mysql"
declare sub ::Query alias "mys_query" lib "mysql"
declare sub ::FetchArray alias "mys_fetcharray" lib "mysql"
declare sub ::FetchHash alias "mys_fetchhash" lib "mysql"
declare sub ::AffectedRows alias "mys_affected_rows" lib "mysql"
declare sub ::ChangeUser alias "mys_change_user" lib "mysql"
declare sub ::CharacterSetName alias "mys_character_set_name" lib "mysql"
declare sub ::DataSeek alias "mys_data_seek" lib "mysql"
declare sub ::ErrorMessage alias "mys_error" lib "mysql"
declare sub ::GetClientInfo alias "mys_get_client_info" lib "mysql"
declare sub ::GetHostInfo alias "mys_get_host_info" lib "mysql"
declare sub ::GetProtoInfo alias "mys_get_proto_info" lib "mysql"
declare sub ::GetServerInfo alias "mys_get_server_info" lib "mysql"
declare sub ::Info alias "mys_info" lib "mysql"
declare sub ::InsertId alias "mys_insert_id" lib "mysql"
declare sub ::Kill alias "mys_kill" lib "mysql"
declare sub ::Ping alias "mys_ping" lib "mysql"
declare sub ::EscapeString alias "mys_real_escape_string" lib "mysql"
declare sub ::SelectDatabase alias "mys_select_db" lib "mysql"
declare sub ::Shutdown alias "mys_shutdown" lib "mysql"
declare sub ::Stat alias "mys_stat" lib "mysql"
declare sub ::ThreadId alias "mys_thread_id" lib "mysql"

end module

--- End code ---

Look at the interface.c for the mysql extension module to see the code behind these functions.

Peter Verhas created a 'do nothing' extension module interface (trial) as an example that he documented pretty well and should be a big help. The developer guide has a section on building extension modules as well.

Post your progress reports as this forum could use a little activity.  ;)


John

Navigation

[0] Message Index

Go to full version