GnuTLSを使用するプロジェクトをVisualStudio2012でビルドしようとしています。Webサイトから最新の公式Windowsビルドをダウンロードし、lib /def:libgnutls-28.def
VisualStudioコマンドプロンプトからbinディレクトリで実行してリンクライブラリを作成しました。
を追加するtypedef long ssize_t
と、コードは正常にコンパイルされますが、リンクは次のエラーで失敗します。
source_file.obj : error LNK2001: unresolved external symbol _gnutls_free
C:\Path\to\executable.exe : fatal error LNK1120: 1 unresolved externals
gnutls_free
ライブラリによって割り当てられて返されたメモリを解放するように呼び出しています。の呼び出しを削除するとgnutls_free
、プロジェクトは正常にリンクされます。これがライブラリによってエクスポートされた単なるグローバル変数(関数ポインタを含む)であることを考えると、gnutls_free
それにアクセスすると別のシンボルへの未解決の参照が発生する理由がわかりません。私はそれが何にも編集されてgnutls_free
いないことを確認しました。#define
gnutls_free_function test = gnutls_free;
テストとして、リンクエラーが発生することを試してみました。GnuTLSソースコードで実行grep -w -r _gnutls_free .
しても何も返されないので、途方に暮れています。
これを機能させるためのアイデアをいただければ幸いです。
編集:
in__declspec(dllimport)
の宣言に追加すると、リンクが成功します。ヘッダーファイルのカスタムバージョンを維持せずにこれを達成する方法はありますか?gnutls_free
gnutls.h