0

嘿,我在使用 SQL 时遇到了不间断的问题。我正在努力获得一些经验,因为我知道这是该行业的重要组成部分。我让它与 C# 一起使用,但现在我正在使用 C++ 连接到数据库。我有正确链接的项目,什么没有。这是我的代码和我遇到的错误。

 #include "stdafx.h"
 #include <mysql.h>
 #include <iostream>
 MYSQL mysql;
 MYSQL_RES result;


using namespace std;
 int _tmain(int argc, _TCHAR* argv[])
 {

    mysql_init(&mysql);

if(!mysql_real_connect(&mysql, "localhost", "root", "*******", "MyDatabse", 0,       NULL, 0))
{
    printf("Failed to connect");
}


return 0;

    }

和错误:

Error   1   error LNK2001: unresolved external symbol _mysql_real_connect@32    c:\Users\Zack-074\documents\visual studio 2010\Projects\MySql\MySql\MySql.obj
Error   2   error LNK2001: unresolved external symbol _mysql_init@4 c:\Users\Zack-074\documents\visual studio 2010\Projects\MySql\MySql\MySql.obj
Error   3   error LNK1120: 2 unresolved externals   c:\users\zack-074\documents\visual studio 2010\Projects\MySql\Debug\MySql.exe   1

我真的很感激帮助。

4

2 回答 2

1

这些是链接器错误。换句话说,您在编译到目标文件时似乎没有任何问题,但是在尝试将这些目标文件链接到可执行文件时遇到了困难。

立即想到的一种解决方案是手动指定要链接的库的位置和/或名称。在 VS2010 中,右键单击您正在处理的项目并选择属性。从那里,打开链接器选项并指定要链接的库所在的目录。

于 2012-04-13T17:33:15.313 回答
0

打开 VS 命令提示符(或任何提示符并执行vsvars32.bat),然后按如下方式使用编译器:

cl /nologo /W4 /EHsc /MD my.cpp /ID:\Opt\MySQL5.5\include ^
   /link /LIBPATH:D:\Opt\MySQL5.5\lib libmysql.lib

^ 字符仅用于续行(为了在此处更好地显示)。重要的是告诉编译器包含目录和链接器关于 MySQL 的 lib 目录,然后指定libmysql.lib要链接的文件。这会将代码放入您的 EXE 中以在运行时加载 DLL。

dir my*
13.04.2012  19:53               342 my.cpp
13.04.2012  19:53             6.144 my.exe
13.04.2012  19:53             9.762 my.obj

修改了代码以不使用stdafx.h

#include <windows.h>
#include <tchar.h>
#include <mysql.h>
#include <iostream>
using namespace std;

MYSQL mysql;
MYSQL_RES result;

int _tmain(int argc, _TCHAR* argv[]) {
    mysql_init(&mysql);
    if(!mysql_real_connect(&mysql, "localhost", "root", "***", "test", 0, NULL, 0))
    {
        printf("Failed to connect");
    }
    return 0;
}
于 2012-04-13T18:02:53.127 回答