curl を libcurl.dll を使用しない static ライブラリとして使う方法

まず、ソースファイルをダウンロードしてきたら解凍して、buildconf.bat をVisual Studio のコマンドプロンプトから実行する
https://curl.se/download/
ここから、zipバージョンをとってきた。

次に、winbuild に移動して

nmake  /f Makefile.vc mode=static RTLIBCFG=static vc=9 MACHINE=x86  ENABLE_IDN=no USE_IPV6=no

を実行

ビルドが終わると lib フォルダの下に libcurl_a.lib ができる

対象のプログラムに
builds\libcurl-vc9-x86-release-static-sspi-schannel\include\curl.h  を追加して
curl の include の前に  #define CURL_STATICLIB を追加する。
#pragma comment(lib,"libcurl_a.lib") を追加する(パスが通ってる事)

1>libcurl_a.lib(schannel.obj) : error LNK2019: 未解決の外部シンボル __imp__CertFreeCertificateContext@4 が関数 _schannel_acquire_credential_handle で参照されました。
1>libcurl_a.lib(schannel_verify.obj) : error LNK2001: 外部シンボル "__imp__CertFreeCertificateContext@4" は未解決です。
1>libcurl_a.lib(schannel.obj) : error LNK2019: 未解決の外部シンボル __imp__PFXImportCertStore@12 が関数 _schannel_acquire_credential_handle で参照されました。
1

→ #pragma comment (lib, "crypt32.lib") 

1>libcurl_a.lib(asyn-thread.obj) : error LNK2019: 未解決の外部シンボル __imp__closesocket@4 が関数 _destroy_thread_sync_data で参照されました。
1>libcurl_a.lib(connect.obj) : error LNK2001: 外部シンボル "__imp__closesocket@4" は未解決です。
1>libcurl_a.lib(socketpair.obj) : error LNK2001: 外部シンボル "__imp__closesocket@4" は未解決です。
1>libcrypto_static.lib(b_sock2.obj) : error LNK2001: 外部シンボル "__imp__closesocket@4" は未解決です。
1>libcrypto_static.lib(bss_sock.obj) : error LNK2001: 外部シンボル "__imp__send@16" は未解決です。

→ #pragma comment(lib, "Ws2_32.lib")

1>libcurl_a.lib(ldap.obj) : error LNK2019: 未解決の外部シンボル __imp__ldap_bind_s が関数 _ldap_win_bind_auth で参照されました。
1>libcurl_a.lib(ldap.obj) : error LNK2019: 未解決の外部シンボル __imp__ldap_simple_bind_s が関数 _ldap_win_bind で参照されました。
1>libcurl_a.lib(ldap.obj) : error LNK2019: 未解決の外部シンボル __imp__ldap_unbind_s が関数 _ldap_do で参照されました。

→ #pragma comment ( lib, "wldap32.lib" ) が必要

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です