質問者
VB6でUNLHA32.DLLを起動するとエラーが発生する

質問
-
はじめまして。
VB6でアプリケーションを作成しています。
プログラムでCSVファイルを生成し、最後に圧縮しますが、その際、UNLHA32.DLLを利用しています。
具体的には、
(General)-(Declaration)ブロックで
Private Declare Function Unlha Lib "UNLHA32.DLL" (ByVal Callhwnd As Long, ByVal LHACommand As String, ByVal RetBuff As String, ByVal RetBuffSize As Long) As Long
と宣言し、
Private Function fncCompress()というプロシージャで
Dim Ret As String * 255
Dim strSendStr As String
strSendStr = "a " & CurDir & "\" & fname & ".lzh " & CurDir & "\" & fname & ".csv"
Unlha frmAplSrch2.hWnd, strSendStr, Ret, 255
End Functionと記述しています。
VisualStudioのワークフォルダでは正常に動作します。(ファイルを生成し、UNLHA32により圧縮します。)
UNLHA32.DLLはVisualStudioのワークフォルダの中にコピーしています。(PC自体にもUNLHA32.DLLはInstallしていますが。)
そこで配布パッケージを作成し、PCにインストールしました。
配布パッケージでは、DLL類は、プログラムの実行ファイル(EXEファイル)と同じフォルダ内にUNLHA32.DLLをコピーするようにしています。
スタートメニューからプログラムを起動すると、
実行エラー53 ファイルが見つかりません。
とエラーが表示されます。
なぜ2者の違いにより正常終了・エラー終了するのかわかりません。
すべての返信
-
余談ですが、上記手法は、Netにて見つけた方法
を利用させていただいたものです。 -
furuyosi さん、こんにちは。
furuyosi さんからの引用 余談ですが、上記手法は、Netにて見つけた方法 を利用させていただいたものです。
VB6 以前の型指定なのでダメだと思います。
.NET では Integer, Long の精度が異なります。 -
おそらく、
Code Snippet<DllImport("Unlha32.dll")> _
Private Shared Function Unlha( _
ByVal handle As System.IntPtr, _
ByVal szCmdLine As String, _
ByVal szOutput As String, _
ByVal dwSize As Integer) As Integer
End Function
しまった、本題は "実行エラー53 ファイルが見つかりません。" でしたね。
2 投稿目しか見ておりませんでした。
うげっ、VB6 ぢゃん... orz
すみません。すみません。(*_ _) -