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" <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED], [EMAIL PROTECTED]
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



--------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php



Reply via email to