【发布时间】:2017-05-17 15:49:42
【问题描述】:
我正在尝试使用main() 函数中的以下代码连接到 mysql 数据库。
MYSQL *connect = mysql_init(NULL);
效果很好,我得到了一个返回的指针值。
我创建了另一个 c++ 文件,其中包含如下函数
int Newl_connection(FileHandler& pProcLog)
{
MYSQL *connect = mysql_init(NULL);
return 0;
}
编译和链接很好,我在主函数(作为测试)中对同一行代码进行了多次调用,一切正常,但是当我运行代码时,它在 Newl_connection() 函数中的行失败。
我已将 Newl_connection 剥离为尽可能基本的内容,并将包含 Main() 的文件中的所有标头包含到包含 Newl_connection() 函数的文件中。
我收到的编译器错误是
程序收到信号 SIGABRT,已中止。 0x00007ffff6bc6428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54 54 ../sysdeps/unix/sysv/linux/raise.c:没有这样的文件或目录。
尝试使用类型名称作为表达式。
尝试使用类型名称作为表达式
尝试使用类型名称作为表达式。出现在所有实例调用中,但 Newl_connection() 函数中的调用是终端。
我已尝试删除 main() 中的所有其他实例,但仍然遇到同样的问题。
为什么代码应该在一个地方工作,但在另一个地方表现不同? 帮助将不胜感激,我对此一无所知。
【问题讨论】:
-
我猜这个问题是由于包含不正确的标题?但是如果没有一个最小的、完整的例子就很难说。
-
调用函数时,是否传递了一个有效的
FileHandler对象? -
“为什么代码应该在一个地方工作,但在另一个地方表现不同?” 很多很多的原因。出示您的minimal reproducible example。