提问人:mmatloka 提问时间:12/6/2008 最后编辑:Kent Fredricmmatloka 更新时间:12/11/2008 访问量:699
在 Windows 下编译 libgadu
Compiling libgadu under Windows
问:
我想在Visual Studio 2008下使用libgadu(即时通讯协议库)。 我已经 http://toxygen.net/libgadu/files/libgadu-1.8.2.tar.gz 下载了 libgadu,并在 cygwin 下编译了它 - ./configure , make , make install。 出现在包含文件夹中的文件 libgadu.h 我复制到另一个文件夹,该文件夹在 VS 中标记为 Include files 目录。
我想从文档中编译代码
#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(¶metry, 0, sizeof(parametry));
parametry.uin = 12345;
parametry.password = password;
parametry.async = 1;
parametry.status = GG_STATUS_INVISIBLE;
sesja = gg_login(¶metry);
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
我该怎么办?
答:
您需要找到已编译的 DLL 和 LIB 文件,或者如果已编译为静态库,则仅找到 LIB 文件。这些文件可能被命名为 libgadu.dll 和 libgadu.lib。
获得这些内容后,可以通过选择“项目属性”并在“链接器”设置下找到“其他依赖项”来指示 Visual Studio 与 LIB 文件链接。
只需添加到“所有配置”的“其他依赖项”列表中即可。libgadu
这很奇怪,因为在 Cygwin 中 ./configure、make 期间,它不会创建任何 .dll 和 .lib 文件。
评论
正如弗兰克已经说过的,这通常意味着库(.lib或.dll)没有被链接。但是,如果成功的编译没有创建 .dll 或 .lib 文件,那么最有可能的情况是 Cygwin 和 VS 之间的构建系统不同步。
具体而言,VS 项目文件中未引用文件。我有一种感觉,它是libgagdu.c本身,因为其中定义了一个gg_login函数。
只需将该文件添加到项目中并重新生成即可。如果它有效,请联系 libgadu 开发人员,以便他们可以自行修复它。
上一个:初级 C++:基类中的虚函数
评论