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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0630
理沙プラグイン作成について18解決


理沙

リンク

2006/6/30(Fri) 21:08:37|NO.1230

こんにちわ、理沙です。
画像効果みたいなのを色々作ったので、それを公開できたらなぁと思っています。
ですが、モジュールとして.hspの形式で公開すると、
どうしてもソースコードが見えてしまいます(涙)

そこで、どうにかして外部からは見えない・触れないようにしたいのですが、
やはりDLL,HPIを作成するしかないのでしょうか、教えて下さいm(__)m

SDKをダウンロードして、hspdllなども参照してみましたが、
やはりVC++を勉強しないとできないことなのでしょうか?

(プラグインを提供なさっている方達も.asなどで公開されているようなので、
やはり無理なのでしょうか?VC++6.0は英語版でしたら持っています。けど使えません(泣))



この記事に返信する


Steep

リンク

2006/6/30(Fri) 21:50:33|NO.1231

ソースコードを隠蔽したければプラグインにするしかないが、
なぜそんなに隠したいのかがよくわからない。

> やはりVC++を勉強しないとできないことなのでしょうか?

Visual C++限定とはいわないがC++の知識は必要。
たぶん画像処理はHSPの数十倍面倒になるかと・・・。

> プラグインを提供なさっている方達も.asなどで公開されているようなので、
> やはり無理なのでしょうか?

プラグイン付属のasは命令を使用可能にするための準備だけで、
内部の処理が見えるようなことはないので安心していい。

> VC++6.0は英語版でしたら持っています。

Visual C++ 8.0 Express Edition 日本語版が無料で公開されている。
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/

> けど使えません(泣)

Webの解説ページを読んだらそのうち使えるようになると思う。
http://wisdom.sakura.ne.jp/ とか。



理沙

リンク

2006/6/30(Fri) 22:57:15|NO.1232

Steep様、お返事ありがとうございます(^^

>ソースコードを隠蔽したければプラグインにするしかないが、
>なぜそんなに隠したいのかがよくわからない。

使っているのは標準命令だけなのですが、
x次元方程式や三角関数など自分で調べて作ったものばかりなので、
私はそれ自体が作品だと思っています(勘違!?)。

ですが、オープンソースにすると、私の作品ではなくなってしまいますよね。
コピー&ペーストでそのまま使えちゃうんです・・もん。
なので頑張ってプラグイン作りたいと思っています!

>http://wisdom.sakura.ne.jp/ とか。

ここの『C言語入門』と『C++入門』ですか?
今から読んでみますっ!
(一応、ポインタの前までなら知ってます。よくある所で転んでます(笑))
リンクありがとうございます。
『VC++』がないですが、C++まで理解できれば大丈夫ですか?
多分めっちゃ時間かかりますよね(^^;
う〜〜(~.~#頑張りますっ!

順番としては、c -> c++ -> vc++ -> SDK であってますか('o';?



Steep

リンク

2006/7/1(Sat) 00:36:22|NO.1233

> x次元方程式や三角関数

数学計算はプラグインにすると速度上のメリットあり。

> オープンソースにすると、私の作品ではなくなってしまいますよね。
> コピー&ペーストでそのまま使えちゃうんです・・もん。

そんなことはないけど。
http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9

> 『VC++』がないですが、C++まで理解できれば大丈夫ですか?

VC++は開発環境の名前で言語ではない。
「Visual C++というソフトウェアでC/C++の開発ができる」ということ。

> 順番としては、c -> c++ -> vc++ -> SDK であってますか('o';?

SDKにC++の知識は必要ないので、SDKを少しやってからC++だと思う。

あと、さっき「C++の知識は必要」て書いたけども、
実際はC言語ができればHSPのプラグインはつくれる。
ただ、プラグインSDKのヘッダファイルはCでコンパイルするとエラーでるよ、と・・・。



理沙

リンク

2006/7/1(Sat) 01:47:34|NO.1234

>数学計算はプラグインにすると速度上のメリットあり。

ほんとですかっ!
それは嬉しいです(^^

>VC++は開発環境の名前で言語ではない。
>「Visual C++というソフトウェアでC/C++の開発ができる」ということ。

すみません、そうだったんですか・・・。

>SDKにC++の知識は必要ないので、SDKを少しやってからC++だと思う。

分かりました。どこまでできるか分かりませんが、
やれるだけやってみたいと思います(^^/
丁寧なご説明ありがとうございました。
プラグインが作れたときには、その旨伝えさせて頂きますっ!



kz3

リンク

2006/7/1(Sat) 10:20:44|NO.1235

> 使っているのは標準命令だけなのですが、
> x次元方程式や三角関数など自分で調べて作ったものばかりなので、
> 私はそれ自体が作品だと思っています(勘違!?)。

使っている命令が標準だとか何だとか、そんなのは関係ないです。
理沙さんが自分で書いたコードは理沙さんの作品ですよ。

> モジュールとして.hspの形式で公開すると、どうしてもソースコードが見えてしまいます(涙)

モジュールとはそういうものなり。

run命令がしっかり動作していて、なおかつ、呼び出し元に戻ってくれたら、
コマンドライン経由でこんなことが出来るかな...なんて考えてみた。

---- cmd.hsp ---- // 処理本体ファイル( オブジェクトファイル cmd.axを生成する ) // cmdはコマンドライン文字列を表示するだけ mes dir_cmdline ---- E O F ----

---- cmd_interface.as ---- // cmd.axの処理を呼び出す命令のインターフェース #module "cmd_interface" #deffunc cmd_mes str p1 run "cmd.ax", p1 // 3.1b3ではランタイムエラー... // 成功してもメモリはリフレッシュされるし、戻ってこないので却下 return #global ------------- E O F ----

---- mysoftware.hsp ---- // これから作るソフトの本体 #include "cmd_interface.as" // インターフェースをスクリプトに組み込む cmd_mes "Hello,HSP3" // インターフェース経由でcmd.axを実行 ----------- E O F ----
axファイルはバイナリファイルなのである程度コードの隠蔽は出来るかも知れないけど、
axから元のソースに戻せる人は戻せると思う。
現段階ではrun命令の仕様でこういった処理は出来ません...。
他にモジュールのコードを隠蔽する方法があるかな?



ひらめ

リンク

2006/7/1(Sat) 11:34:58|NO.1236




理沙

リンク

2006/7/1(Sat) 12:52:02|NO.1237

kz3様、ひらめ様、お返事ありがとうございます。

>モジュールとはそういうものなり。

ハイ(≧*≦)/

>run命令がしっかり動作していて、なおかつ、呼び出し元に戻ってくれたら、
>コマンドライン経由でこんなことが出来るかな...なんて考えてみた。
>(略)

こんなに考えてくれたんですかっ!
この方法なら、HSPの知識だけでできそうですね。
参考にさせて頂きます(^^v

>他にモジュールのコードを隠蔽する方法があるかな?

あればいいんですけどね〜。
でも、SDKのこと知って、今C言語を夢中で勉強中です。
Steep様より頂いたURL(http://wisdom.sakura.ne.jp/)が分かりやすくてステキです。
そしてHSPを覚えたときみたいに、最高に楽しいです(笑)

>http://hspwiki.nm.land.to/?MakeHPI

リンクありがとうございます。
拝見させてもらったことはあるんですが、なんかちんぷんかんぷんで・・(涙)
ある程度Cに馴染めてきたら、もう一回チャレンジしてみますね。

みなさま貴重な情報ありがとうございますn<(_ _)>n



ひらめ

リンク

2006/11/26(Sun) 15:45:11|NO.3778

なんだかずっとROMってる自分の名前が・・・
ちょっと気になっただけです

一応知ってると思いますがついでに
http://www.kumei.ne.jp/c_lang/

一時自分もプラグイン作りに夢中でした、動くと結構嬉しいもんです
理沙さん頑張ってください、応援してます



ぷほ。

リンク

2006/11/28(Tue) 12:58:34|NO.3813

・・・・・・これは個人的な意見ではあるものの

・・・・・・よっぽど特殊で、世界中の企業や趣味人から
「使用したい」と言われるようなものでも作らない限り、

つまり、商業的な価値を有するものでもない限り、

ソースコードを他人に見られて困る事なんかないと思うのだけれども、

その辺どうなんだろう。


つーか、少なくとも自分は丸出しなんだけど(大笑



ゆちボン

リンク

2006/11/28(Tue) 17:08:14|NO.3814

理沙さん、プラグインを作るのは相当難しいですよ。
1+1ならまだしも、画像なら「DC」(デバイスコンテキスト)を扱わないと
いけないのでかなり面倒です。

C言語はよく知らない(Hello!World表示ぐらいしかわからない)ので、
はっきりとはいえませんが、文字列を使うときは32文字以内でも
ちゃんと確保、開放しないといけないや、
変数を使う前には必ず宣言するといったことをしないといけません。

C以外でもプラグインは作れるので、いかに言語名を挙げておきます。

ActiveBasic(少しバイナリエディタで改造が必要だが)
Delphi
VisualBasic

HSPに若干似てるし(ほぼ似せることができる)、StringなどがあるABが作りやすい部分もありますが、
早いのはC、Delphiがいいかと。



Irisawa

リンク

2006/11/28(Tue) 20:56:55|NO.3819

投稿者自体は既に解決してしまっていると思いますが...。

>>ゆちボンさん

基本的にCの命名規則で関数をエクスポートしたDLLを作成できる言語なら特に環境を選ばず
なんでも可能です。
単純にDLできるHSPSDKに含まれているのはC(特にMS-VC++)のSDKなので作成する言語毎に
移植しなければいけませんが。
現在、DでHSPSDKとサンプルプラグインを試行錯誤しながら作成中です。
(一応はある程度できました)

> ActiveBasic(少しバイナリエディタで改造が必要だが)

特にいじる必要はないはずですが...。

http://hspwiki.nm.land.to/?MakeHPI%2FActiveBasic%2Fchapter1

サンプル2以降も早く作成しないと...(全く手をつけていませんが)。

他にPascalやアセンブラ、マシン語で直接作成するという方法もあります。
(アセンブラはまだしもマシン語はできる人はまず、いないと思う)

ところでDelphiがそもそもObject Pascalの一種からの派生です。
(当初はObject Pascalといっていたが現在ではDelphi言語と呼称される)

> VisualBasic

MS-VBはCOM DLLしか作成できない(C命名規則の関数エクスポートができない)はずなので
作成できないと思います。



ゆちボン

リンク

2006/11/29(Wed) 18:56:23|NO.3847

>> ActiveBasic(少しバイナリエディタで改造が必要だが)
>特にいじる必要はないはずですが...。
HSPって「DLLの命令名@16」という風な「@」のあとに何かつけないといけませんでしたよね?
ActiveBasicでは「@」を関数の名前として使うことができません...
これって「3」ではなくなったんですか???

>> VisualBasic
>MS-VBはCOM DLLしか作成できない(C命名規則の関数エクスポートができない)はずなので
>作成できないと思います。
それは知りませんでした...
ありがとうございます。ひとつ知識が増えました。



Yuki

リンク

2006/11/29(Wed) 20:44:25|NO.3848

@16 は関数をエクスポートする時に自動的に付くはずです。
この数字は引数から自動的に計算できるので HSP 3 は内部で自動計算しているのではないでしょうか。



Irisawa

リンク

2006/11/29(Wed) 21:42:10|NO.3849

すみません。もしかするといろいろゴチャになっている可能性も...。
たまに、(ワザとではないのですが)間違っていることがあるのでご注意下さい。

よく見てみるとABやDelphiで作成されたDLLにエクスポートされている関数名にはついて
いませんね。
この辺りよく分かりません。
あと、VBについては「普通のDLLは作成できない」という情報しか見つからないようです。



Irisawa

リンク

2006/11/29(Wed) 21:51:06|NO.3851

調べてみると、「_関数名@16」になるのは2.xx互換プラグインの場合(#func)のよう
ですね。
HSP3の拡張プラグイン命令は#cmdを使用した新しい形式で実装できるので必ずしも上記で
ある必要はないようです。
なお、#funcのヘルプにはエクスポート名を指定しないと自動で「_関数名@16」になると
書かれているので指定した場合は普通のDLL関数と同様にそのまま使えるのでは。
#regcmdには「VC++でエクスポートした場合に」とも書かれているので取り敢えず、
エクスポート名を正しく正確に記述できればとにかくいいようです。
あとは、実際に試してみるのが一番ですね。



Yuki

リンク

2006/11/29(Wed) 21:55:25|NO.3853

(・д・
付かないんですか?
インポートのときは Alias が使えるようですが、エクスポートのときは無理なんですかね・・・。



Irisawa

リンク

2006/11/29(Wed) 22:07:48|NO.3854

追記。

HSP2.xx系のSDK(拡張プラグイン)は命令毎に関数をエクスポートしなければいけなかったの
ですが、HSP3.xのSDK仕様は初期化関数だけエクスポートすればいいので便利です。

初期化関数はVC++でエクスポートした場合は「_関数名@4」になりますが、DelphiやABで
エクスポートした場合は「関数名」のままでいいようです。
Dは「extern (Windows) export void 関数名(HSP3TYPEINFO *info)」とすればちゃんと
「_関数名@4」でエクスポートできるようなのでこれでOKです。
Dにおける「extern (Windows)」はVC++の「WINAPI」に相当するようです。



Irisawa

リンク

2006/11/29(Wed) 22:18:00|NO.3855

>>Yukiさん
ABのサンプル書いたのは実はぼくです。
で、そのときに作成したインポートの指定が


#regcmd "hsp3cmdinit", "hsmsgbox.dll"

でちゃんと動作していました。

http://hspwiki.nm.land.to/?plugin=attach&refer=MakeHPI%2FActiveBasic%2Fchapter1&openfile=msgbox.hsp

また、ぼくはDelphi自体は使用したことがありませんが同様についていないようです。

http://hspwiki.nm.land.to/?plugin=attach&refer=MakeHPI%2FDelphi%2Fchapter1&openfile=hsmsgbox.as

ところで、誰がMakeHPI/Delphi/chapter1とMakeHPI/Delphi/chapter2を削除したんだろう。



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