D言語を現在学習しております。
OpenSSLでAESの暗号化をするため、静的ライブラリ(インポートライブラリではない)を使って実装することを試みています。
テストとして、以下のようなコードを組みました。
D言語
1import std.stdio; 2 3void main() 4{ 5}
ビルドコマンドは以下のような形です。
32ビット用
dmd -v -m32 source\app.d libs\ssleay32.lib libs\libeay32.lib
64ビット用
dmd -v -m64 source\app.d libs\ssleay64.lib libs\libeay64.lib
ここで、64ビット用のものは正しくビルドされます。
しかし32ビットのものはリンカエラーが出ます。
リンカエラーは下記のとおりです。
C:\D\dmd2\windows\bin\link.exe app,,nul,"libs\ssleay32.lib"+"libs\libeay32.lib"+user32+kernel32/noi; OPTLINK (R) for Win32 Release 8.00.17 Copyright (C) Digital Mars 1989-2013 All rights reserved. http://www.digitalmars.com/ctg/optlink.html libs\ssleay32.lib Error 43: Not a Valid Library File
原因はわかっていて、64ビットビルド時は、VisualStudioのlink.exeが使われます。
32ビットビルド時は、DigitalMars製のOptlinkが使われているようです。
そこで、32ビットビルド時、64ビットビルド時双方でVisualStudioのlink.exeを使わせたいと考えております。
コマンドラインでやる場合は、コンパイルだけしてリンカを叩くだけですので容易ですが
dubコマンドでビルドする際、自動的にリンカが選択されてしまいます。
dubコマンドで任意のリンカを選択する方法は有りますでしょうか。
現在のdub.jsonの内容です。
json
1{ 2 "name": "openssltest", 3 "authors": [ 4 "test" 5 ], 6 "description": "A minimal D application.", 7 "copyright": "Copyright © 2016, test", 8 "license": "proprietary", 9 "dependencies": { 10 "openssl": "~>1.1.4+1.0.1g" 11 }, 12 "sourceFiles":[ 13 "libs\\ssleay32.lib", 14 "libs\\libeay32.lib" 15 ] 16}
何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/29 00:50 編集