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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0902
WHITEMinGW+GCC+C でHSP用DLLをつくる4解決


WHITE

リンク

2010/9/2(Thu) 13:10:37|NO.34789

MinGW+GCC+CでHSP用のDLLを作ってみようと思ったのですが、
計算結果が違います、なぜでしょうか??

参考にしたサイト
http://kkkkk.net/?key=docs.dll4hsp


//distance.c int distance( double *result, double x, double y, double x2, double y2 ){ *result = sqrt( ((x-x2)*(x-x2))+((y-y2)*(y-y2)) ); return 0; } EOF //distance.def EXPORTS distance EOF //distance.bat gcc -c distance.c dllwrap --def distance.def -o distance.dll distance.o pause EOF //distance_test.hsp #uselib "distance.dll" #func distance "distance" var, double, double, double, double x = 2.0 y = 3.0 x2 = 4.0 y2 = 40.0 distance res, x,y,x2,y2 mes res mes sqrt( ((x-x2)*(x-x2))+((y-y2)*(y-y2)) ) EOF

distance.c :Cソースコードです
distance.def :定義ファイルです
distance.bat :コンパイル用バッチファイルです

2点間の距離をもとめる命令をつもりが、HSPでの計算結果とDLLでの計算結果
が異なってしまいます。

//実行結果
-209133577
37.054015

上がDLLでの計算、下がHSP3での計算結果です。
なにがおかしいのでしょうか?
お願いします。



この記事に返信する


WHITE

リンク

2010/9/2(Thu) 13:17:50|NO.34790

すみません;
参考のサイトの方にBBSがありました。
まずはそちらで質問させていただきます;



check

リンク

2010/9/2(Thu) 13:24:19|NO.34791

変数resの型がint型になっているからだろう。
res = 0.0など、double型に変換してやると正しい結果が出るはず。



check

リンク

2010/9/2(Thu) 13:28:44|NO.34792

複数の掲示板などに同じ質問を投稿するのはマルチポストといって
マナー違反にされる場合があるぞ。 というかここでもそれは好ましくないがな。



WHITE

リンク

2010/9/2(Thu) 13:41:44|NO.34793

回答ありがとうございます。
おかげさまで解決しました。

そうですね、
気をつけます;



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