1

Visual Studio 2008でlibgadu (インスタント メッセージング プロトコルのライブラリ) を使用したいと考えています - ./configure、make、make install。インクルードフォルダーに表示されたファイル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");
}

コンパイル中に次の 2 つのエラーが表示されます。

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 という名前になります。

それらを取得したら、[プロジェクト プロパティ] を選択し、[リンカー] 設定で [追加の依存関係] を見つけて、Visual Studio に LIB ファイルとリンクするように指示できます。

libgaduすべての構成の追加の依存関係リストに追加するだけです。

于 2008-12-05T22:48:44.607 に答える
1

Frank が既に述べたように、これは通常、ライブラリ (.lib または .dll) がリンクされていないことを意味します。ただし、コンパイルが成功しても .dll または .lib ファイルが作成されない場合、最も可能性の高いケースは、Cygwin と VS の間のビルド システムが同期していないことです。

具体的には、ファイルが VS プロジェクト ファイルで参照されていません。gg_login 関数が定義されているため、libgagdu.c自体だと感じています。

そのファイルをプロジェクトに追加して再構築するだけです。動作する場合は、libgadu の開発者に連絡して、彼らの側で修正できるようにしてください。

于 2008-12-06T00:53:11.503 に答える
0

Cygwin で ./configure, make を実行すると、.dll ファイルと .lib ファイルが作成されないため、これは奇妙です。

于 2008-12-05T22:58:41.750 に答える