4 messages in com.mysql.lists.win32Re: HELP mysql_server_init embedded i...| From | Sent On | Attachments |
|---|---|---|
| Derick Smith | 27 Feb 2003 12:33 | |
| Gelu Gogancea | 28 Feb 2003 04:40 | |
| Derick Smith | 28 Feb 2003 11:09 | |
| Gelu Gogancea | 02 Mar 2003 13:53 |
| Subject: | Re: HELP mysql_server_init embedded in a DLL?![]() |
|---|---|
| From: | Derick Smith (niag...@hotmail.com) |
| Date: | 02/27/2003 12:33:22 PM |
| List: | com.mysql.lists.win32 |
I am posting this again, in hope that I will get a response.
I tried doing the following (see VB code below. I got this code from another site):
I get the same error message as if I was calling the DLL I created in C which calls mysql_server_init.
Is it impossible to call this function from VB or embedded in another DLL from VB? Can I only use the embedded mysql library in C or C++?
Thanks Eric
Public Declare Function mysql_server_init Lib "C:\mysql40\source\lib_release\libmysqld.dll" _ (ByVal argc As Long, _ ByVal argv As Byte, _ ByVal groups As Byte) As Long
Private Sub cmdmysq_server_init_Click() Dim argv(0) As Byte, groups(0) As Byte Dim i As Long argv(0) = Asc("0") groups(0) = Asc("0") i = mysql_server_init(0, argv, groups) End Sub
From: "Derick Smith" <niag...@hotmail.com>
To: mys...@lists.mysql.com, win...@lists.mysql.com Subject: mysql_server_init embedded in a DLL? Date: Wed, 26 Feb 2003 14:34:28 +0000
Hi!
I am trying to create a DLL that will hide embedded mySQL functions for use with VB. I am using mysqlserver.lib. I am able to compile and execute the following code. This has to be done in C because VB is too slow :-(
If mysql_server_init function is run in the DLL from Visual Basic. I get the following error message: "..referenced memory at "0x000000". The memory could not be read".
Without the mysql_server_init function it will run correctly. It will also run correctly when this is compiled as a .lib file linked to a C program.
Is it possible to embed mysql_server_init in a DLL? (So the DLL can be used in VB)
Thanks in advance for any responses.
Thanks Eric
header1.h
#define GPAPI __stdcall
header2.h
typedef unsigned long DBS; #define NULLDBS (DBS)0
api.c
GPAPI DBS dbNewSet (char * basedir, char * datadir, char * dbname) { return NewSet(basedir,datadir,dbname); }
newset.c
extern DBS NewSet(char * basedir, char * datadir, char * dbname) { DBSET* pSet = CreateSet(); char *args[3]; char strArgs[3][1024]; int iRtn; int argc = 3;
strcpy(strArgs[0],"this_program"); sprintf(strArgs[1],"--basedir=%s",basedir); sprintf(strArgs[2],"--datadir=%s",datadir); args[0]= strArgs[0]; args[1]= strArgs[1]; args[2]= strArgs[2];
/* If I comment out this line of code, the DLL will run correctly. If mysql_server_init function is run in the DLL. I get the following error message: "..referenced memory at "0x000000". The memory could not be read" */ iRtn = mysql_server_init(3, args, server_groups);
if (pSet ==0 ) return NULLDBS; memset(pSet, 0, sizeof(DBSET)); /* Zero the structure. */ pSet->size = sizeof(DBSET);/* Assign structure size. */ pSet->magic = DBS_MAGIC; /* Assign magic number. */
return (DBS)(void*)pSet; }
_________________________________________________________________ The new MSN 8: smart spam protection and 2 months FREE* http://join.msn.com/?page=features/junkmail




