GnuTLSを使用するプロジェクトをVisualStudio2012でビルドしようとしています。Webサイトから最新の公式Windowsビルドをダウンロードし、lib /def:libgnutls-28.defVisualStudioコマンドプロンプトから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_freegnutls.h