- 締切済み
VB.Net で Zlib.dll 但し ExpressEdition
はじめまして。 VB.Net Express Edition でプログラム開発中です。 必要上 Zlib.dll でZipファイルの圧縮/解凍をする必要が発生しました。 Webを調査して、参考となる技術情報は見つける事ができたのですが、 肝心の Zlib.dllの参照設定方法がわかりません。 参照/追加 で表示されるライブラリの一覧にZlibらしきものが見当たりません。(.Net , Com共に) 私の技術・知識が未熟な事もあるのですが、そもそもExpress Edition故の制限なんてこともあるのでしょうか? もしお時間ありましたら、アドバイス願います。 【補足】 ちなみに、今回はかくかくしかじかの理由でZlib.dllで開発するしか道がありません。 他の方法でZipファイル操作実現可能なのは存じております。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Yune-Kichi
- ベストアンサー率74% (465/626)
> Declareの件なんですが、指示というかいわゆるこちらの仕事として開発する上での「開発規約」というもに違反してしまう為です。 それは, >> 結論から言うと、Declareではないですね。 の根拠ではないです。それが理由であるなら,「Declareではない」ではなく,「事情によりDeclareは使えない」です。 それはおいておくとして,Declareがダメなのか,P/Invokeがだめなのか,どちらですか。 単に前者であるならば,DllImport属性使ってしまえば見た目上Declareはなくなります。やっていることは一緒ですが。 後者であるならば,そもそもzlib.dllの使用自体が規約に反します。 > 加えて外部的なDLLを使用するのが今後運用上問題なしとの断言ができないという見解でもあります。 > つまり、.Netの中だけでクローズする形をとりたいのです。 zlib.dllを使っている以上,.NETの外側へのアクセスになります。 すでに「外部的なDLLを使用する」ということになるのですが。 ところで,「外部的なDLL」とは,どのような範囲を指すのでしょうか。 ・単純に.NET Framework再頒布可能パッケージに含まれる ・上記 + J# ・上記 + MS製コンポーネント ・上記 + サードパーティ製コンポーネント ・MSILで動くアセンブリ全て 例えばMSが提供しているものだけで作るのであれば,J#のライブラリであるvjslib.dllを参照設定し,java.util.zipの各種クラスを使うことになると思います。
- dsuekichi
- ベストアンサー率64% (171/265)
> 結論から言うと、Declareではないですね。 > .Net なんで。 私が提示したリンクは、「.NET用のDeclare」の解説ページですけど・・・ 試したけど駄目だったってことなんでしょうか? そういえば、 > 参考となる技術情報は見つける事ができたのですが、 って事でしたね。具体的にどういう内容なんでしょう? > ソース内でも aaa.bbb.ccc.zlib.zip(すいません適当です) ひょっとして誰か(その技術情報の著者?)が、 zlib.zipをラッピングした、.NET用のクラスを作成している・・・とか・・・ #つまり、そのクラスをインストールしてないと動かないとか・・・
- Yune-Kichi
- ベストアンサー率74% (465/626)
> 結論から言うと、Declareではないですね。 という結論を導き出した根拠は何でしょうか。 VB.NET以降においても,DeclareステートメントはP/Invokeのために残っています。 http://www.winimage.com/zLibDll/ からソースをダウンロードしてみましたが,ファイル中にあるのはC用のファイルでした。 明らかに.NET Framework用のものではありません。 さらに,DLLをダウンロードしてDependency Walkerで覗いてみましたが,通常の関数があるだけのようです。 .NET系のDLLであればあるはずの,mscoree.dllへの参照もありませんでした。 ざっと見ただけですが,zlibを.NETから使うにはP/Invokeで呼び出すものだと,私は見なしました。 なので,#1さんの > 「参照設定」ではなく、「Declare ステートメント」で宣言して使用するのでは? が正解だと思います。
- dsuekichi
- ベストアンサー率64% (171/265)
「Zlib.dll」って、良く知りませんが・・・ 「参照設定」ではなく、「Declare ステートメント」で宣言して使用するのでは? (http://msdn2.microsoft.com/ja-jp/library/4zey12w5(VS.80).aspx)
補足
早速御回答いただきまして、有難う御座いました。 結論から言うと、Declareではないですね。 .Net なんで。 ソース内でも aaa.bbb.ccc.zlib.zip(すいません適当です) のように名前空間でしていします。 最悪COM方式での実現も視野に入れてしらべてみますね。
お礼
お礼が遅れてしまい、大変失礼いたしました。 Declareの件なんですが、指示というかいわゆるこちらの仕事として開発する上での「開発規約」というもに違反してしまう為です。 加えて外部的なDLLを使用するのが今後運用上問題なしとの断言ができないという見解でもあります。 つまり、.Netの中だけでクローズする形をとりたいのです。 貴重なご意見、有難うございました。