vb6调用C API-MySQL嵌入式
我正在尝试通过VB6调用约定连接到带有嵌入式服务器的MySQL 5.5.48,但不知道怎么做 MySQL文档在调用MySQL_Init之前声明调用的vb6调用C API-MySQL嵌入式,mysql,c,vb6,Mysql,C,Vb6,我正在尝试通过VB6调用约定连接到带有嵌入式服务器的MySQL 5.5.48,但不知道怎么做 MySQL文档在调用MySQL_Init之前声明调用的 int mysql_server_init(int argc, char **argv, char **groups) 在线示例给出了以下C语言代码: static char *server_args[] = { "this_program", /* this string is not used */ "--datadir=
int mysql_server_init(int argc, char **argv, char **groups)
在线示例给出了以下C语言代码:
static char *server_args[] = {
"this_program", /* this string is not used */
"--datadir=.",
"--key_buffer_size=32M"
};
static char *server_groups[] = {
"embedded",
"server",
"this_program_SERVER",
(char *)NULL
};
if (mysql_server_init(sizeof(server_args) / sizeof(char *),
server_args, server_groups)) {
//Error Message
}
我已尝试将函数声明为:
Public Declare Sub mysql_server_init Lib "libmySQLd" (ByVal _
lMYSQL As Long, ByVal abc As Long, ByVal def As Long)
或
和呼唤
call mysql_server_init(0, NULL, NULL)
或
但该计划正在酝酿之中。请帮助我了解vb6和C之间的正确调用约定从vb6可靠地调用C DLL是一个非常重要的过程,它为VB6提供了从任何标准DLL或COM对象调用几乎任何函数的能力。它返回一个long,因此您的声明应该在
末尾加上long以指示返回类型。常量vbnullstring
为空字符串,vbnullchar
为Chr(0)
。至于正确的调用约定,有几种。它是声明函数
。看见 有关调用约定的概述。x64完全不同,不能从VB6调用。COM是一种更常见的方法-在安装了MySQL驱动程序的情况下使用ADODB对象。一切都在那里,但没有如何传递指针数组,即char**您现在是否使用该项目来调用该函数?我做高级VB6工作已经有一段时间了,所以我忘记了一些细节,但我发现,反复试验往往是找出如何调用不熟悉的外部dll函数的最有效方法。尝试API声明的不同格式。请尝试ByRef而不是ByVal。尝试将VarPtr的结果传递给请求指针的参数。如果有人的答案不能让你更快到达目的地,你最终应该找到正确的组合
call mysql_server_init(0, NULL, NULL)
call mysql_server_init(0, chr(0), chr(0))