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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
1115
たねはら結果レポート7解決


たねはら

リンク

2011/11/15(Tue) 23:18:49|NO.43028

こんちは。
HSP3.3でコンパイル+実行しようとすると、以下のような結果レポートが出ます。

#HSP script preprocessor ver3.3RC1 / onion software 1997-2011(c)
#Use file [hspdef.as]
#Error:symbol in use [appendmenu] in line 12 [user32.as]
#Fatal error reported.
#Error:symbol in use [appendmenu] in line 10 [editor_g.hsp]
#Fatal error reported.

何をどうしても全然わからないので、意味と解決方法を教えて下さい。
お願いします!!



この記事に返信する


ZAP

リンク

2011/11/16(Wed) 00:11:37|NO.43031

どのようなプログラムを書いて実行しようとしたのかを示して貰わないと判断できないと思いますよ。



ひらまる

リンク

2011/11/16(Wed) 00:23:34|NO.43033

「user32.as」の「12行目」と
「editor_g.hsp」の「10行目」で
同じ「appendmenu」という名前が使われている。
ということです。
以下のスクリプトでも同種のエラーが出ます。

#define テスト #define テスト

よーく読めば意味がわかるはずです。
エラーが英語と見るや、読み取るのを諦めお手上げになるのは日本人の悪い癖かと(。ω。)



たねはら

リンク

2011/11/16(Wed) 01:30:15|NO.43036

お返事ありがとーございます。

しかし、editor_g.hspの10行目には、
#include "user32.as"

と書いてあって、「appendmenu」とは書いてありません。 10行目の
#include "user32.as"
を7行目に移動させてみたところ、今度は
#HSP script preprocessor ver3.3RC1 / onion software 1997-2011(c)
#Use file [hspdef.as]
#Error:symbol in use in line 13 [mod_menu.as]
#Fatal error reported.
#Error:symbol in use in line 8 [editor_g.hsp]
#Fatal error reported.

と出てきて、また意味不明になりました……。さっきと同じような考えでよろしいんでしょうか……?
全然何が原因で、どうすれば解決できるのかわからなくなってきました……。



ひらまる

リンク

2011/11/16(Wed) 01:55:20|NO.43037

原因は同じですね。

「mod_menu.as」の「13行目」には
「#func global CreateMenu "CreateMenu"」とあり、

「user32.as」の「111行目」には
「#func global CreateMenu "CreateMenu"」とありました。

「symbol in use」はプリプロセッサ命令による定義で同名の要素があった場合に吐かれるエラーです。
user32.asは多くのAPI命令を定義しているので、他のモジュールと競合することが多いです。
対処法はいくつかありますが、最終的に「定義を1つにしぼる」ことになります。

user32.asやmod_menu.asの内容を削除したりコメントアウトすることは推奨できません。
コメントアウトしたことを忘れて、「あれ? この命令が使えない?」等となる場合があります。

最も有効なのは、必要な命令が書いてる行だけコピーして、独自のソースとして保存することです。

#uselib "USER32.DLL" #func global CreateMenu "CreateMenu"
と書けば、USER32.DLLに収録されているCreateMenuという命令が使えるようになります。
#uselib
#func
#cfunc
のヘルプとuser32.as、mod_menu.asの中身を見れば、
WindowsAPIを使うのが実はどれだけ簡単なのかわかります。
とはいえせっかくuser32.as等が用意されているので、完全に覚える必要はなく、
どこをコピーすれば正常に動くのかを知ることができれば問題ありません。

user32.asやmod_menu.as等のファイルは、
C:\Program Files\hspをインストールしたフォルダ\common
に置いてあります。



skyblue

リンク

2011/11/16(Wed) 07:32:42|NO.43041

>user32.asやmod_menu.asの内容を削除したりコメントアウトすることは推奨できません。
>コメントアウトしたことを忘れて、「あれ? この命令が使えない?」等となる場合があります。
別名をつけて保存すれば、
忘れていたとしても大抵はファイル名をコピーとかなので大丈夫なのでは?



たねはら

リンク

2011/11/16(Wed) 13:13:10|NO.43045

無事解決しました!ありがとーございます。
とはいえ、また新たなエラーで出てきたので、頑張って解決していこと思います。
またわからないことがあったら質問するかもしれませんが、その時はよろしくお願いします。



ひらまる

リンク

2011/11/17(Thu) 02:20:09|NO.43057

>別名をつけて保存すれば、
>忘れていたとしても大抵はファイル名をコピーとかなので大丈夫なのでは?
そうですね…
だとしたら、編集するのは別名にした方のファイルが良いですね。
「user32_EX.as」等の名前で保存して、「#include "user32_EX.as"」とするのは割と安全かもしれません。



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