プロが教える店舗&オフィスのセキュリティ対策術

環境はWindowsXP SP3
VisualStudio2008です。

メイクファイルからdllを生成するには

dllとlib形式で用いるフリーのライブラリがありまして、
Windows用バイナリとソースが提供されています。
Windows用バイナリの方がリリースが遅いので、
最新のソースの方でdllとlibを生成しようと考えました。
しかし、中身を見ると、
C言語用の「.c」「.h」ファイル以外に以下のファイルが含まれており、
これは何なのかと疑問を持ちました。

aclocal.m4
config.guess
config.sub
configure
configure.in
depcomp
INSTALL
install-sh
ltmain.sh
Makefile.am
Makefile.in
missing

調べたところメイクファイルというものだと分かったのですが、
これを用いてどうやってdllを生成すればよいのでしょうか。


参考として、このライブラリの提供サイトを記載しておきます。
http://libharu.org/wiki/Downloads

A 回答 (3件)

>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _malloc は既に LIBCMT.lib(malloc.obj)


>で定義されています。


nmake -f script/Makefile.msvc
でlibをビルドして、
そのまま
nmake -f script/Makefile.msvc_dll
を実施したのでしょうか?

makeではコンパイル済みで変更のないソースはコンパイルしません。
で…Makefile.msvcでは-MTが、Makefile.msvc_dllでは/MDが指定されています。
# 前者は「マルチスレッド」、後者は「マルチスレッド DLL」の指定…ですな。


nmake -f script/Makefile.msvc clean
で生成されたファイルを削除した上で、
nmake -f script/Makefile.msvc_dll
を実施してみてはどうですか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
ご回答通りのの手順ミスだったようで、ようやくビルドして利用することができました。

お礼日時:2011/08/18 09:36

libHaru 2.2.xには、MSVC++のMakefileが入っていないようです。



libHaru 2.1.0をDLして展開。
libHaru 2.2.1もDLして展開して、ソースとヘッダなどを上書きコピーして、
「Visual Studio 2008 コマンド プロンプト」等でコマンドプロンプトを起動、
cd /d ~
でディレクトリ移動して…
nmake -f script/Makefile.msvc
でビルドが開始されました。

ただし、zlibが無いのでエラーになってしまいましたが……。
導入して最後まで確認…はしていませんのでとっかかりとして参考に…なるかなぁ。

割と無理矢理な方法ですので、あまりおすすめはできませんけどね。
# ソースファイルが追加/削除されていた場合にビルド対象になりませんし…
cygwin/MSYSの方がよろしいかと思われます…。

この回答への補足

ありがとうございます。非常に参考になりました。
zlib, libpngが必要だったのでヘッダファイルを追加し、
lib形式で生成することができました。

しかしdllの生成となるとまたもやエラーです。

nmake -f script/Makefile.msvc_dll

というコマンドでビルドすればいいようですが、
MSVCRT.lib(MSVCR90.dll) : error LNK2005: _malloc は既に LIBCMT.lib(malloc.obj)
で定義されています。

という、VC++で開発中にたまに見るエラーが表示されました。
VisualStudioで言うプロジェクトの構成を変更すれば解決できそうですが、
メイクファイルの場合、どこでプロジェクトの設定を変えられるのでしょうか。

補足日時:2011/07/08 15:42
    • good
    • 0

中は見ていませんが, ドキュメントに何か書かれていませんか?

    • good
    • 0
この回答へのお礼

すみません、質問内容にあるINSTALLというのがそれでした、ありがとうございます。
インストール方法がこちらに載っていました。またまた参考までに。
http://libharu.org/wiki/Documentation/Install

しかしちょっと進んだところでまた行き詰っています。

nmake -f script/Makefile.msvc

というコマンドでできるそうですが、
この「script」というフォルダがなく、
VisualStuidoをインストールしたフォルダで直接Makefile.msvcを探しても
見つかりませんでした。よってこのまま実行するとエラーになります。

調べてみるとこのライブラリとは関係のないサイトに、
Makefile.inの中にある@VERSION@を設定し、
ファイル名をMakefile.msvcに変えてそれを使えるといった記述がありました。
しかし@VERSION@が何のことなのか分からず…。
とりあえずファイル名だけ変えてコマンドを実行すると、

fatal error U1035 : syntax error : expected ':' or '=' separator

と表示され、失敗しました。
これはセミコロンが抜けてるらしいので、中を開いてみましたが、
これまた何がなんだか分からずに苦戦しています。
ここまででアドバイス等あればお願い致します。

お礼日時:2011/07/07 17:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!