Windowsでのlibgaduのコンパイル
-
19-08-2019 - |
質問
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(¶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");
}
コンパイル中に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ファイルが作成されないため、奇妙です。