HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0902
qer[hsp v3.3] hspcmp.dllを利用したスクリプトが実行ファイルからだと動作しない11解決


qer

リンク

2012/9/2(Sun) 23:09:52|NO.49052

hsp v3.3に関する質問です。

hspcmp.dllを使って、指定したスクリプト(以下ターゲット)を実行するプログラム(以下自作コンパイラ)を作りました。
スクリプトエディタから自作コンパイラのスクリプトを実行すると、ターゲットを動作させることができました。
しかし、自作コンパイラのスクリプトから生成した実行ファイルからだと、ターゲットが動作しませんでした。
(ターゲットの実行時にエラーが出ます)

つまり「スクリプトエディタからの実行と、実行ファイルからの実行とで挙動が違う」現象に遭遇しています。
これについて、何か考えられる原因などご存知の方は教えていただけないでしょうか。

よろしくお願いします。



この記事に返信する


KA

リンク

2012/9/3(Mon) 00:01:56|NO.49056

DLLが実行ファイルと一緒にないからでは?



てん

リンク

2012/9/3(Mon) 07:15:26|NO.49065

でも、(実行できるできないは別として)ターゲットのコンパイルは行われ、
実行ファイルは作成された、ってことですよね?
だとするとファイルが存在しないことに起因するエラーではない気がします。

なんにせよ、ソースを見せていただけると助かります。



KA

リンク

2012/9/3(Mon) 09:50:19|NO.49067

>>実行ファイルは作成された、ってことですよね?
確かにそうでした、でも質問の書き方も悪いですよ。

>>hspcmp.dllを使って、指定したスクリプト(以下ターゲット)を実行するプログラム
>>(以下自作コンパイラ)を作りました。
hspcmp.dllを使う、自作コンパイラのスクリプトを作った。

>>スクリプトエディタから自作コンパイラのスクリプトを実行すると、ターゲットを
>>動作させることができました。
スクリプトエディタ上からの実行は、正常に動作させることができた。

>>自作コンパイラのスクリプトから生成した実行ファイルからだと、ターゲットが動
>>作しませんでした。(ターゲットの実行時にエラーが出ます)
ただし、単体の実行ファイルにしてしまうと動作しない。

>>つまり「スクリプトエディタからの実行と、実行ファイルからの実行とで挙動が違
>>う」現象に遭遇しています。
hspcmp.dllで作った実行ファイルだが、その実行にもhspcmp.dllを必要とする。

>>何か考えられる原因などご存知の方は教えていただけないでしょうか。
→エディタ上からは、エディタが勝手にDLLを探す。
→実行ファイルにすると、DLLを勝手に探してくれない。

実行ファイルと同じ場所にDLLを配置すれば勝手に探してくれる。
スクリプトの作り方に因っては、ASファイルなども必要となる。

よってその自作コンパイラは、付属エディタを置き換える使い方で無ければ
正常に動作しない。
--------------------------------------------
と解釈したのだが、エラーの内容も分からないし、どの程度のコンパイラを
作りたいのか分からないと、確かに判断は出来ません。



てん

リンク

2012/9/3(Mon) 13:51:05|NO.49069

理解しました。質問の解釈によってどちらとも捉えられるということですね。
 
自作コンパイラのスクリプトから生成した実行ファイル

これが果たして
「自作コンパイラ自体をコンパイルした、自作コンパイラのexe」
なのか
「自作コンパイラを使ってターゲットをコンパイルした、ターゲットのexe」
なのかによって原因が異なってきますね。

前者の場合、KAさんがおっしゃる通り、
ターゲットをコンパイルする時点で問題が発生しているので
DLLが同梱されてないことによるエラーが濃厚です。

後者の場合、コンパイル自体は成功していますので、
パックファイルの指定ミスなどが原因だと思われます。



y.tack

リンク

2012/9/3(Mon) 17:07:26|NO.49072

コンパイルしたいスクリプトを
自作コンパイラ(?)をexeにしないでコンパイルするのは簡単ですが
自作コンパイラ(?)をexeにしてコンパイルするのは大変です
確か過去ログにもあったはず

ただし
http://lldev.jp/others/freeware.html
Windows用フリーウェア2
cHspComp
をインストール
してexecすれば割と簡単に出来ます
ソフトのソースコードも付属されてたはずなので
参考にするのもいいかもしれません



qer

リンク

2012/9/3(Mon) 21:48:44|NO.49088

ご回答ありがとうございます。

質問の書き方については反省しています。
自作コンパイラとかターゲットとかいった言葉の乱用と、
実行ファイルに関する修飾語が甘かったかなと思っています。

私が最終的にやりたかったのは、D&Dされたhspスクリプトファイルを
実行するプログラムを作ることでした。
(いちいちスクリプトエディタ開いて実行するのが面倒だからという理由)

また、エラー内容につきましては、下記が発生しています。
・システム変数(ginfo系など)に対して未定義だと指摘する警告
・一部の構文で、付けた覚えも無いのに命令や変数名の末尾に
 '@mX' (Xは0とか1とか) が付いたものとみなされていて文法違反になっている

ちなみに
>自作コンパイラのスクリプトから生成した実行ファイル
については後者、すなわち
>自作コンパイラを使ってターゲットをコンパイルした、ターゲットのexe
の方を意図しています。

最後に、
>自作コンパイラ(?)をexeにしないでコンパイルするのは簡単ですが
>自作コンパイラ(?)をexeにしてコンパイルするのは大変です
とのことなので、この問題に献身する覚悟の無かった私としては
正直諦めようかという気持ちに傾いています。
安易に好奇心に従ってしまったがゆえの結果なのかなと反省しております。

せっかく、お時間もいただいて、貴重な回答もいただいたのに、
ご期待に(沿えているかどうかわかりませんがもしそうなら)沿えることができず、申し訳ありません。

KAさんが提示してくださった質問例についても参考にさせていただきます。
上手い文章を作れないと質問どころかコミュニケーションも行えないということは
日々実感していることであり、ここの掲示板は、そういった部分を指摘してくださる方がいるので
大変重宝しております。

まとまりのない返信となりましたが、失礼しました。



y.tack

リンク

2012/9/3(Mon) 22:21:54|NO.49089

ごめんなさい
>cHspComp
>をインストール
>してexecすれば割と簡単に出来ます
とか書いて
試してみたらexecでの起動わからない

でもcHspCompのショートカットにD&Dしたら動いてくれました



K-s

リンク

2012/9/5(Wed) 03:53:34|NO.49140

エラー内容を見ると拡張マクロ(hspdef.as)が定義されていないのだと思います。
HSP3.3のスクリプトエディタだとデフォルトで読み込まれるはずですが、
hspcmp.dllのhsc_compには拡張マクロを使用するかどうかのフラグ設定があるので
自作コンパイラを作成する際その設定を間違えてはいないでしょうか。



qer

リンク

2012/9/6(Thu) 23:33:15|NO.49181

>K-sさん
ご返信ありがとうございます。
hsc_compの設定は全パターン試しましたが、実行ファイルからだと
いずれの場合でもエラーが出るので、その線は違うようです。

ここで本スレッドを解決にチェックしようと思います。
皆様のご返信からだと、hspcmp.dllの使い方がおかしいという可能性が高そうです。
私は「hspcmp.dllのバグですよ」と言われるのかなと思っていただけに、
ちょっと勘違いだったかなと思いました。



暇人

リンク

2012/9/7(Fri) 01:03:52|NO.49182

>hsc_compの設定は全パターン試しましたが、実行ファイルからだと

hspdef.as、hspcmp.dll、hsp3.exe、自作コンパイラ
を一緒のフォルダに置いてる?



qer

リンク

2012/9/8(Sat) 02:37:15|NO.49219

既に解決チェック付けちゃいましたが。

>暇人さん
hspdef.asとhsp3.exeは置いていませんでした。
そこは盲点でした。
置いてみたところ、動作を確認しました。

ご指摘のニュアンスを汲み取ると、これは基本的な事のように思えました。
この程度にも気づけなかったとは…
まだこれに挑むレベルではないということを示しているのかもしれません。
そこは追々勉強していくとして、何はともあれ、ありがとうございましす。



ONION software Copyright 1997-2018(c) All rights reserved.