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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0117
ニボッシーdllの競合?の対処方法5解決


ニボッシー

リンク

2016/1/17(Sun) 15:39:36|NO.74166

色々な拡張プラグインやAPIを使っていると使えない拡張プラグインが出てきたりするのですが
こういった場合どのように対処すればいいのでしょうか?
最小限ソース載せておきます。(競合?エラーでます)


#include "kernel32.as" #define ERROR_ALREADY_EXISTS $B7 #uselib "kernel32.dll" #func VirtualProtect "VirtualProtect" var,int,int,var



この記事に返信する


科学太郎

リンク

2016/1/17(Sun) 15:50:11|NO.74167

undef命令を使え良いが…。

#include "kernel32.as" #define ERROR_ALREADY_EXISTS $B7 #uselib "kernel32.dll" #undef VirtualProtect #func VirtualProtect "VirtualProtect" var,int,int,var



暇人

リンク

2016/1/17(Sun) 15:56:41|NO.74168

別に使えない訳じゃない
同じ名前は定義できないだけ

.asの方を編集するか
自分で追加する方の名前を変えるとか
パラメータ部分だけ変更したいなら

#include "kernel32.as" #define ERROR_ALREADY_EXISTS $B7 #undef VirtualProtect #uselib "kernel32.dll" #func VirtualProtect "VirtualProtect" var,int,int,var
って方法もある



ニボッシー

リンク

2016/1/17(Sun) 17:29:44|NO.74169

>科学太郎さん
undefの使い方がよくわかりました!
名前が競合している場合解除するのに使うのですね。

>暇人さん
同じ名前が原因だったのですね。知りませんでした。
わかりやすいサンプルありがとうございました!



kanamaru

リンク

2016/1/17(Sun) 17:33:49|NO.74170

余談かも知れませんが、
undefは名前が競合して無くても使う場合があります。
例えば、標準の命令をundefで無効化して、
内部処理を自分で実装なんてこともできます。
有名なのは、pset、pgetの高速化とかかな?



ニボッシー

リンク

2016/1/17(Sun) 17:57:08|NO.74171

>kanamaruさん
なるほどそういう使い方もあるのですか。
今後のためにも覚えておきます。
ありがとうございました。



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