Re: アセンブラで使いたいのですが ( No.1 ) |
- 名前:管理人 日時:2017/09/24 13:45
恐らくですが、DXライブラリはC言語のライブラリではなくC++言語のライブラリなので
DxLib.lib 内の関数を単純な名前で参照できないのが原因だと思います
こちらの C#用のDXライブラリのパッケージの中に
https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用
C言語形式で作成した DxLib.lib と、実行に必要な DxLib.dll を入れましたので、
二つのファイルを GoAsm で使用できるフォルダに入れていただき、
call DxLib.lib:dx_DxLib_Init
のように記述してみてください
( C#用DXライブラリの関数は、必ず先頭に dx_ が付きますので、LoadGraph は dx_LoadGraph に
DrawPixel は dx_DrawPixel というように、必ず dx_ を先頭に付けてください )
試してはいませんが、成功する確率はC++言語形式の DxLib.lib を使用するより高いと思います
因みに C#用のDXライブラリには DrawFormatString など一部の関数が使用できませんのでご了承ください m(_ _;m
|
Re: アセンブラで使いたいのですが ( No.2 ) |
- 名前:X 日時:2017/09/24 16:46
お返事ありがとうございました。
C++形式だったのですね。
クラス名などが書いていなかったのでわかりませんでした。
たしか、GoAsmではC++の呼び出しは「クラス名のメソッド」で指定ではなく、
「vtableの何番目になんたらメソッドが置かれるから何番目かで指定して呼び出し」になり、ややこしかったはずです。
C#用のDXライブラリは今、少しためしただけですが、DxLib.libの方は
Cannot use import library instead of static code library!
などと表示されて使えませんでしたが、
DxLib.dllだけ使ったら初期化、dx_DrawPixel、終了までエラーなしで通り、実行するところまでできました。
とりあえず解決です。有難うございました!
|
Re: アセンブラで使いたいのですが ( No.3 ) |
- 名前:X 日時:2017/09/24 20:49
すいません、追加質問です。
件のC#用のライブラリの関数は、
STD CALL仕様でなく_cdeclのC CONVENTION仕様でしょうか。
STD CALLでなければ自分でスタックを直さないといけないのでお聞きしたいのですが・・・
調べたらどうも_cdeclみたいなのです。
|
Re: アセンブラで使いたいのですが ( No.4 ) |
- 名前:管理人 日時:2017/09/24 21:52
> STD CALL仕様でなく_cdeclのC CONVENTION仕様でしょうか。
stdcall で出力しています
> 調べたらどうも_cdeclみたいなのです。
私が調べた限りでは stdcall になっていましたが、どのような方法で調べたのでしょうか?
|
Re: アセンブラで使いたいのですが ( No.5 ) |
- 名前:管理人 日時:2017/09/24 22:07
すみません、改めて確認したところ cdecl になっていました m(_ _;m
stdcall にしてみますので、少々お待ちください
|