質問

Visual Studio 2008でlibgadu(インスタントメッセージングプロトコルのライブラリ)を使用します。 libgadu http://toxygen.net/libgadu/files/をダウンロードしましたlibgadu-1.8.2.tar.gz およびcygwinの下でコンパイルしました-./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 

これで何をすべきですか?

役に立ちましたか?

解決

コンパイルされたDLLとLIBファイル、または静的ライブラリにコンパイルされた場合はLIBファイルを見つける必要があります。ファイルはおそらくlibgadu.dllおよびlibgadu.libという名前になります。

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

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

他のヒント

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

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

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

./ configure中にCygwinでmakeを実行すると、.dllおよび.libファイルが作成されないため、奇妙です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top