1

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

我想从文件

#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 

我应该怎么做呢?

回答

2

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

一旦你有了这些,你可以指示Visual Studio链接LIB文件,方法是选择Project Properties并在链接器设置下找到Additional Dependencies。

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

0

奇怪的是,因为在./configure中,在Cygwin中制作,它不会创建任何.dll和.lib文件。

+0

作为编译.c文件的结果,该符号可能位于.o(或.obj)文件中。 – 2008-12-06 00:46:33

1

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

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

只需将该文件添加到项目并重建。如果有效,请联系libgadu开发人员,以便他们能够将其修复。