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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0315
ht_ask#funcによる定義で名前空間を明示するとエラーになる3解決


ht_ask

リンク

2015/3/15(Sun) 03:01:01|NO.67866

HSPWikiの3.0用のモジュールを実行したらエラーになったので原因を調べてみたのですが、
グローバル空間からモジュール空間内で定義された外部関数をコールしようとすると
シンタックスエラーになるというものでした。これは仕様ですか?

#module m #uselib "user32.dll" #func global SetWindowPos "SetWindowPos" int, int, int, int, int, int, int #func SetWindowPos@m "SetWindowPos" int, int, int, int, int, int, int #global chkbox "test", a SetWindowPos stat, 0, 50, 50, 200, 100, $20 SetWindowPos@m stat, 0, 50, 50, 200, 100, $20



この記事に返信する


Test

リンク

2015/3/15(Sun) 03:04:31|NO.67867

#deffunc等が存在しない、あるいは存在しても使用されないモジュールは自動で削除されます。
それが原因かと。

回避するにはソースコードの一番上に
#cmpopt optcode 0
を記述します。



ht_ask

リンク

2015/3/15(Sun) 03:05:50|NO.67868

あ、すみません。タイトルを間違えました。
globalを付けても駄目なことに気づいたのは後なので、最初は名前空間の問題だと思っていましたが、
症状は最初に書いたとおりです。



ht_ask

リンク

2015/3/15(Sun) 03:16:04|NO.67869

> Testさん
なんと、それは盲点でした。教えていただいてありがとうございます。
モジュールの中の、たまたまdefineでWin32APIを叩いてるだけの命令を使っていたので、
それで削除されてしまったわけですが、思わぬ穴ですね。

こういうふうに適当な命令を走らせておけば部分的に対応できました。

#module m #uselib "user32.dll" #func global SetWindowPos "SetWindowPos" int, int, int, int, int, int, int #func SetWindowPos@m "SetWindowPos" int, int, int, int, int, int, int #deffunc __m_kesuna return #global __m_kesuna



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