• ベストアンサー

【VC++2005(CLR)】C++/CLIへのUNLHA32の導入、及び、lzh圧縮解凍の実行の仕方について

いつもお世話になっています。 VC++初心者です。 以前の質問と同様になってしまいますが、 再度質問させて頂きたいと思います。 やりたいことは、VC++2005(CLR)で ボタンを押しすと、lzh圧縮、解凍するようにさせたいです。 ↓こんなイメージです。 private: System::Void button_Form1_Click(System::Object^ sender, System::EventArgs^ e) {   String^ strFileName = "aaa.txt"//ファイル名   String^ strCompressFileName = "aaa.lzh"//圧縮されたファイル名   //ここにlzh解凍(べつのボタンでlzh圧縮)をしたい } ※先頭行に全角スペースを使用しています。 現在、他の方からアドバイスを頂いて、以下の状態まで来ました。 ・UNLHA32をダウンロードしました。  (格納先:C:\Program Files\ArchiverDll\UNLHA32) ・Form1.h内のボタンに実装するので、以下のコードを  Form1.h内の「#pragma once」の下に追加しました。 #include "C:\\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.H" ・LIBの追加ができていません。  LIBの追加は、  ・「ソリューションエクスプローラ」のプロジェクト名を右クリック    し、「プロパティ」を選択。  ・「構成プロパティ」-「リンカ」-「入力」をクリック。  ・「追加の依存ファイル」に「C:\\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.LIB」    を記入。  この時点で、エラーが発生しています。 (UNLHA32.LIBは上記の同フォルダにあります。) このエラーの対処、及び、これからすべきことを ご指導頂けませんでしょうか。 お手数ですが、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.7

 こんにちは。補足頂きました。  ・「ソリューションエクスプローラ」のプロジェクト名を右クリックし、「プロパティ」を選択。  ・「構成プロパティ」-「リンカ」-「入力」をクリック。  ・「追加の依存ファイル」に「C:\\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.LIB」  の手順で追加した「C:\\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.LIB」のパスを「追加の依存ファイル」から削除して見て下さい(初期状態に戻すと言う事)。  その後、「ソリューションのリビルド」で出来ませんか。

yuki7091
質問者

お礼

一度、本件の質問を閉じさせていただきます。 ご対応、ありがとうございました。

yuki7091
質問者

補足

ご回答、ありがとうございます。 毎回のご教授、本当にありがとうございます。 ビルドできました! UNLHA32の導入がこんなに大変だったとは思いませんでした。 しかも、導入の仕方の説明がされているサイトもありませんし、、、 (もしかしたらテキストに書いてあったのかも、、、) しなしながら、やっとスタート地点に立てた感じです。 これ以降は、C#などを参照して、目的であるファイル圧縮、解凍の コードを記述していけば宜しいのでしょうか。

その他の回答 (6)

回答No.6

 こんばんは。  stdafx.hの中に以下を追加。 // TODO: プログラムに必要な追加ヘッダーをここで参照してください。 #include <windows.h> #include <stdio.h> // sprintf()のために必要 #include <time.h> // UNLHA32.Hの前に必要 #include"C:\Program Files\ArchiverDll\UNLHA32\UNLHA32.H" #pragma comment(lib, "C:\\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.LIB")  その後「ソリューションのリビルド」を実行して出来ませんか。

yuki7091
質問者

補足

ご回答、ありがとうございます。 Form1.hに追加した下記のincludeを削除し、 #include <windows> #include <iostream> #include <stdio.h> // sprintf()のために必要 #include <string.h> #include <time.h> // UNLHA32.Hの前に必要 #include "C:\\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.H" stdafx.hにご指摘いただいたとおり、下記をincludeしました。 #include <windows.h> #include <stdio.h> // sprintf()のために必要 #include <time.h> // UNLHA32.Hの前に必要 #include"C:\Program Files\ArchiverDll\UNLHA32\UNLHA32.H" #pragma comment(lib, "C:\\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.LIB") その後、「ソリューションのリビルド」をすると、 エラーが一件がでてきました。 >LINK : fatal error LNK1104: ファイル 'C:\Program Files\ArchiverDll\UNLHA32\UNLHA32.LIB >/ASSEMBLYRESOURCE:.\Debug\ProjectAAA.Form1.resources >/ASSEMBLYRESOURCE:.\Debug\ProjectAAA.FormXXX.resources >/ASSEMBLYRESOURCE:.\Debug\ProjectAAA.FormYYY.resources' を開くことができません。 ※1行として出力された内容を、4行にして書いております。。 その後は、どのようにしたら宜しいでしょうか。 お手数ですが、よろしくお願いします。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

CLI な部分は知りませんが, とりあえず「やってから考える」という方針でいいのでは?

yuki7091
質問者

補足

ご回答、ありがとうございます。 実行してみますと、 以下のエラーが一件出力されました。 >LINK : fatal error LNK1104: ファイル 'C:/Program.obj' を開くことができません。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

UNLHA32.H の先頭にあるコメントに 「このヘッダファイルを読み込む前に, windows.h 等, 基本的なヘッダを前もって読み込んでおく必要があります」 と書かれています. 確かに他のドキュメントに書かれていないのはちょっと不親切ですが....

yuki7091
質問者

補足

ご回答、ありがとうございます。 某サイトを参照すると、 MFCの場合、以下のインクルードが必要とありました。 #include <windows> #include <iostream> #include <stdio.h> // sprintf()のために必要 #include <string.h> #include <time.h> // UNLHA32.Hの前に必要 #include "UNLHA32.H" C++/CLI(CLRプロジェクト)の場合は、どうなるでしょうか。 本当に初心者ですみません。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

ダウンロードしてみた. ちょっと気になったんだけど, インクルードしているヘッダファイルをインクルードしている順番の通りに挙げてもらえますか? ちなみに C/C++ 的には #include "c:/Program Files/ArchiverDll/UNLHA32/UNLHA32.H" の方が安全.

yuki7091
質問者

補足

ご返答、ありがとうございます。 このような内容を書いています。 *********Form1.hの先頭********** #pragma once #include "C:\\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.H" #include "Common.h" //自分で追加した.hファイル #include "Progress.h"//別フォームの内容が記述されている.hファイル namespace MyProject {  using namespace System;  using namespace System::ComponentModel;  using namespace System::Collections; 以下省略 ******************* ちなみに、 UNLHA32.LIBファイルの追加、とUNLHA32.Hのインクルードを 除けば、ビルドでき、プログラムを実行できています。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

それだけの情報で回答できたらほとんど超能力者だよ.... 「どんなエラーが出ていて」「どんなプログラムなのか」を知っているのは今のところあなただけです.

yuki7091
質問者

補足

ご指摘、ありがとうございます。 以下のような、エラーが出力が延々と続いています。 ******* C:\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.H(38) : error C2146: 構文エラー : ';' が、識別子 'ULHA_INT64' の前に必要です。 C:\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.H(38) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません C:\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.H(38) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません C:\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.H(46) : error C2146: 構文エラー : ';' が、識別子 'HARC' の前に必要です。 C:\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.H(46) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません C:\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.H(46) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません *******

  • chie65535
  • ベストアンサー率43% (8518/19364)
回答No.1

>・「追加の依存ファイル」に「C:\\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.LIB」を記入。 >この時点で、エラーが発生しています。 Cの文字列とは違うんだから、ファイルを指定する場合のパス区切り記号は「\」のように「¥1つ」で良い。「\\」と書いたらエラーになる。 C:\\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.LIB と記入しないで C:\Program Files\ArchiverDll\UNLHA32\UNLHA32.LIB と記入しよう。

yuki7091
質問者

補足

ご回答、ありがとうございます。 毎回のご教授、感謝しております。 ご指摘頂いたとおりにしましたが、エラー 300、 警告 0 が出力され、ビルドできませんでした。 他に問題のありそうなところはどこでしょうか。

関連するQ&A

  • 【VC++2005(CLR)】lzh形式で、圧縮、解凍したい

    いつもお世話になっております。 VC++初心者です。 現在、VC++2005 ExpressEditon CLRプロジェクトで コーディングしいます。 あるボタンをクリックすることで、指定したファイルaaa.txtを lzh形式で圧縮するようにするには、どのようにしたら宜しいでしょうか。 そして、ある指定したファイルbbb.lzhを解凍するには どのようにしたら宜しいでしょうか。 お手数ですが、サンプルソースを紹介して頂きたくお願いします。

  • 圧縮(lzh)を解凍するvbのサンプルありませんか?

    圧縮(lzh)を解凍するvbのサンプルありませんか? インプットFILE aaa.lzh・・・lha形式の圧縮ファイル アウトプットFILE aaa.txt・・・aaa.lzhを解凍したファイル プログラム仕様 aaa.lzhを読み込み、解答してaaa.txtに出力する。

  • openCVでのデバックエラー

    画像や動画の研究で、aviファイルから色の抽出などを行うためにIntelのopenCVを使用と考えています。 しかし、自作プログラムやopenCVに付属されているサンプルプログラムさえもデバックが失敗してしまい実行することができません。 OSはWindows Professional version2002のVisualC++ 2005で動かしています。 openCVは「OpenCV_b5a」を使用しています。 インストール時にVC++のインクルードファイルに C:\Program files\OpenCV\cv\include C:\Program Files\OpenCV\cvaux\include C:\Program Files\OpenCV\cxcore\include C:\Program Files\OpenCV\otherlibs\highgui ライブラリファイルに C:\Program files\OpenCV\lib を追加させました。 新しくプロジェクトを作成するたびに、リンカの入力に "cv.lib" "cxcore.lib" "cvaux.lib" "highgui.lib" "ipl.lib" を追加させプログラムを作っています。 しかし、デバックをするとすべてのプログラムにおいて、 'AAA.exe': 'C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。 'AAA.exe': 'C:\WINDOWS\system32\kernel32.dll' を読み込みました。シンボルが読み込まれていません。 ・・・・・・ と、シンボルが読み込まれていませんとエラーが沢山表示され、 プログラム '[2508] AAA.exe: ネイティブ' はコード -1 (0xffffffff) で終了しました。 と、失敗して困っています。 初心者ですが、この原因が分かる方いましたらどうぞご教授ください。

  • 解凍後に自動的に特定のファイルを実行させたいのですが、そのようなことができる圧縮ソフトはあるのでしょうか?

    ソフトの配布のため、LZHやZIPなどで圧縮を欠けたいのですが、解凍後に自動的に特定のファイルを実行させたいのですが、そのようなことができる圧縮ソフトはあるのでしょうか? === これらを圧縮して、一つの圧縮のかかった実行ファイルにする。 A.XXX B.XXX C.XXX ... Setup.EXE ↓ haifu.exe これを解凍した際、自動的に Setup.exeが実行する。 このようなソフトを探しています。

  • VB2005ExpressEditionでのUnlha32.dllのエラーコードの出し方

    現在VB2005ExpressEditionでUnlha32.dllを使ってファイルの解凍をしようとしています しかし、失敗するのでエラーコードを出させるようにしてみました でも、出てきたのはどうやらエラーコードとは違うもののようなのです Unlha32.dllのエラーコードの出し方が間違っているようなのでエラーコードの出し方を教えてください ソースです↓(半角スペースは全角スペースにしてあります) Public Class Form1   Private Declare Function Unlha Lib "Unlha32.dll" (ByVal CmdLine As String) As Long   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click     MsgBox(Unlha("e C:\test.lzh -x1a1 -c C:\ *.*"))   End Sub End Class

  • lzh形式の解凍について・・・

    lzh形式の圧縮ファイルを解凍するため、 「Unlha32.dll」というやつをインストールしたのですが、 lzh形式のファイルを解凍すると 「CRC エラーが発生しました」とか「格納ファイルのハフマンコードが壊れています」と出て,解凍できません。 だれか助けてください。 OSは98です。

  • カメラキャリブレーションのプログラムについて質問です

    んにちは。只今レポート課題でopenCVを使ったカメラキャリブレーションの課題をやっています。 しかしエラーが出てきてとても困っています。エラーの内容は「1>C:\Program Files\OpenCV\cv\include\cv.h(58) : fatal error C1083: include ファイルを開けません。'cxcore.h': No such file or directory」 という内容です openCVをインストールしてPathを変更してライブラリに追加したりと、しっかり下準備をしたのですがどうしても上のようなエラーが出てしまいます。 どうすればエラーが治るのでしょうか。誰か教えてください。お願いします。 ちなみに環境はvisual studio C++ 2005 Express Editionです。Visual C++のツール>オプション>VC++ディレクトリには 以下を加えております。 インクルードファイルには C:\Program Files\OpenCV\cv\include C:\Program Files\OpenCV\cxcore\include C:\Program Files\OpenCV\cvaux\include C:\Program Files\OpenCV\otherlibs\highgui ライブラリファイルには C:\Program Files\OpenCV\bin C:\Program Files\OpenCV\lib を入力しています。 プロパティ>構成プロパティ>リンカ>入力>追加の依存ファイルにはcv.lib cxcore.lib highgui.lib cvaux.lib cvcam.libを入力しています

  • unlhaでフォルダごと自己解凍形式にするには?

    unlhaで圧縮したファイルを自己解凍形式(exe)にする場合、 フォルダとその下のファイルをいっしょに自己解凍形式にするにはどうしたらいいのでしょうか? lzhにはできますが、exeにはできません。 教えて下さい。

  • windows10でVC6.0++のclを使いたい

    cl.exeの場所:C:\Program Files\Microsoft Visual Studio\VC98\Bin 環境変数INCLUDE設定:C:\Program Files\Microsoft Visual Studio\VC98\Include 環境変数LIB設定:C:\Program Files\Microsoft Visual Studio\VC98\Lib を登録したのですが、mspdb60.dllがないといわれました。 検索したらあるのですが、 どうすれば、Windows10でvc6.0++のCコンパイラを使えますか? 教えてくださいよろしくお願いします。

  • lzhからファイルの削除

    お世話になります。 直接は関係ないかも知れませんが、 winfdなるファイル操作aplを使っています。 winfdは圧縮・解凍にunlha32を使っています。 lzhの中のファイルを削除したいのですが、 良い方法はありますでしょうか。 現在は、 一度全てを解凍し、該当ファイルを削除した後、再圧縮しています。 宜しくお願いします。

専門家に質問してみよう