C++でwebサイトにログインするコードを書かないといけなくなったので調べた所、libcurlというライブラリが有名なのでこれを取り込む事にしました。

配布サイトにはプリビルド版が無かったので自分でビルドする羽目になり、少し嵌ったのでメモです。

vs2015 x64のビルドコマンドは

// vs2015 開発者プロンプトを起動
cd E:\prj\Externals\curl-7.50.3\winbuild
nmake /f Makefile.vc mode=static VC=14 DEBUG=yes MACHINE=x64

なのですが次のエラーが出ました。

fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\link.exe"' : return code '0x458'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\nmake.exe"' : return code '0x2'
Stop.

ログを見ると定義済みマクロがx86っぽい値になっていたのでそれが原因かなと推測。調べるとvs2015のコマンドプロンプト起動時にx86設定で起動する場合があるらしくその場合は起動後次のバッチを叩けばx64に切り替わります。

call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat"

これで問題解決です。無事にビルドできました。勿論、x86向けにビルドしてしまったオブジェが残っているので出力ディレクトリを削除する必要があります。

 

今日中にログインする所まで実装できるといいなぁ。