下のスレに、スパムが入って勝手に解決済にされたようなので削除しました。
改めて宜しくお願いします。
始めましてm(_ _)m
HSP歴十数年(^^;)、ただいまようやくCでマシン語を作る勉強をしています。
ちょくとさんやblueleafさんのHPを参考にさせていただいているのですが、
どちらにもマシン語内で直接API関数を使う事は出来ず、関数アドレスをHSP側から
渡す事によって使うと解説されています。
私は、Microsoft Visual Studio C++ 2008とblueleafさんのMAKE.BATを使って
勉強をしているのですが、具体的どうすれば良いか分からないので、
参考情報がないかと色々調べたところ、こちらの下記のページに辿り着きました。
http://hsp.tv/play/pforum.php?mode=pastwch&num=17931
これだっ!と思って、やってみたのですがエラーになります。
そこでこのページのYOYOさんが作られた下記のスクリプトをまんまやってみたのですが、
やはりエラーになります。
いろいろ調べてみると、この「BOOL (WINAPI *SetPixelV)(HDC,int,int,COLORREF)」
関数アドレスを示す部分が認識されずにエラーになるようです。
YOYOさんはこれでマシン語を生成されたようなのですが、この書き方では、
VSC++ではダメなのでしょうか?
いろいろ他の情報も探ったのですが、現在お手上げの状態になっています。
どなたかご指導なりご助言を頂ければと思います。
宜しくお願いします。m(__)m
//YOYOさん作成のサンプルスクリプト #include <windows.h> void WINAPI DrawMandelbrotSet(HDC hdc, double *RealMin, double *ImagMax, double *step, int iteration, int width, int height, COLORREF *ColorTable, int LengthColorTable,BOOL (WINAPI *SetPixelV)(HDC,int,int,COLORREF),double d1,double d2) { int i, x, y; double hoge, re, im, real, imag; COLORREF color; real = *RealMin; for(x = 0; x < width; x++) { imag = *ImagMax; for(y = 0; y < height; y++) { re = 0.0; im = 0.0; color = RGB(0, 0, 0); for(i = 0; i < iteration; i++) { hoge = re; re = re * re - im * im + real; im = d1 * hoge * im + imag; if (re * re + im * im > d2) { color = ColorTable[i * LengthColorTable / iteration]; break; } } SetPixelV(hdc, x, y, color); imag -= *step; } real += *step; } }
checkさん、早速のご助言ありがとうございます。m(_ _)m
CでDLLは作った事は無いのですが、アクティブベーシックで
いくつか作った事はあります。
しかし、ちょっとした速度アップに、実行ファイルにあまり
DLLなど余分なアプリをつけたくないという思いもあって、
今まで避けてきたマシン語に取り組みました。(^^;)
XBG|YAMANOTE231103(PC)、早速のご助言ありがとうございます。m(_ _)m
教えていただいたページは、参考にしている上記のblueleafさんのページで
Cだと思いますが、ちょっと私には理解できませんでした。
引き続き、どなたかマシン語に関して
Microsoft Visual Studio C++ 2008 ベースでの
ご助言、ご指導を宜しくお願いします。m(_ _)m