1

我想在 Visual Studio 2008 下使用 libgadu(即时通讯协议库)。我已经下载了 libgadu http://toxygen.net/libgadu/files/libgadu-1.8.2.tar.gz并在 cygwin 下编译了它- ./configure 、 make 、 make 安装。出现在包含文件夹中的文件 libgadu.h 我复制到另一个文件夹,该文件夹在 VS 中标记为包含文件目录。

我想从文档中编译代码

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <libgadu.h>

using namespace std;

int main(void)
{
    char password[]= "haslo";
    struct gg_session *sesja;
    struct gg_login_params parametry;
    struct gg_event *zdarzenie;

    memset(&parametry, 0, sizeof(parametry));
    parametry.uin = 12345;
    parametry.password = password;
    parametry.async = 1;
    parametry.status = GG_STATUS_INVISIBLE;


    sesja = gg_login(&parametry);
    if (!sesja) {
        cout << "Can't connect" << endl;
       exit(1);
    }

    system("PAUSE");
}

在编译期间,我收到两个错误:

Error   1   error LNK2019: unresolved external symbol _gg_login referenced in function _main    1.obj
Error   2   fatal error LNK1120: 1 unresolved externals 

我该怎么办?

4

3 回答 3

2

您需要找到已编译的 DLL 和 LIB 文件,如果已编译为静态库,则只需找到 LIB 文件。这些文件可能被命名为 libgadu.dll 和 libgadu.lib。

一旦你有了这些,你可以通过选择 Project Properties 并在 Linker settings 下找到 Additional Dependencies 来指示 Visual Studio 与 LIB 文件链接。

只需添加libgadu到所有配置的附加依赖项列表。

于 2008-12-05T22:48:44.607 回答
1

正如弗兰克已经说过的,这通常意味着一个库(.lib 或 .dll)没有被链接到。但是,如果成功的编译没有创建 .dll 或 .lib 文件,那么最有可能的情况是 Cygwin 和 VS 之间的构建系统不同步。

具体来说,VS 项目文件中没有引用文件。我感觉它本身就是libgagdu.c,因为其中定义了一个 gg_login 函数。

只需将该文件添加到项目并重建。如果可行,请联系 libgadu 开发人员,以便他们最终修复它。

于 2008-12-06T00:53:11.503 回答
0

这很奇怪,因为在 Cygwin 中进行 ./configure 时,它​​不会创建任何 .dll 和 .lib 文件。

于 2008-12-05T22:58:41.750 回答